Phpunit выдаёт неопределённую переменную в проектах - PullRequest
1 голос
/ 01 мая 2019

Я изучаю PHPUnit с Laravel и застрял в ошибке.Я слежу за TDD с Laravel из Laracasts, и я сталкиваюсь с ошибкой PHPunit при выполнении запроса get.

Получается сообщение об ошибке:

ErrorException: неопределенная переменная: project

C: \ xampp \ htdocs \ birdboardapp \ storage \ framework \ views \ 06b7a65ce168ffa601dc57bf60713aa232636d2f.php: 7

Мой тестовый пример

  /** @test */
    public function a_user_can_view_a_project()
    {

        $this->withoutExceptionHandling();

        $project = $attributes = factory('App\Project')->create();

        $this->get('/projects/' . $project->id)
            ->assertSee($project->title)
            ->assertSee($project->description);
    }

Мои маршруты / web.php какниже

 Route::get('/projects/{project}', 'ProjectsController@show');

ProjectsController равен

public function show(){

    $project = Project::findOrFail(request('project'));

    return view('projects.show' ,compact($project));
}

, а представление (show.blade.php в каталоге проектов) равно

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
<h1>{{ $project->title }}</h1>
<div>{{ $project->description }}</div>
</body>
</html>

Теперь, когда я пытаюсь запуститьтестовый пример a_user_can_view_a_project дает мне сообщение об ошибке «ErrorException: неопределенная переменная: проект»

1 Ответ

2 голосов
/ 01 мая 2019

В вашем методе контроллера show вы, похоже, вызываете compact($project), но это не так, как работает функция compact.

compact принимает имя переменной, а не саму переменную.

См .: https://www.php.net/manual/en/function.compact.php

Решение будет:

  1. используйте compact правильно:
public function show() {
  $project = Project::findOrFail(request('project'));

  return view('projects.show' , compact('project'));
}
  1. вообще не использовать compact (рекомендуется):
public function show() {
  $project = Project::findOrFail(request('project'));

  return view('projects.show' , [
    'project' => $project
  ]);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...