Я изучаю PHPUnit с Laravel и застрял в ошибке. Я следил за TDD с Laravel от Laracasts и сталкиваюсь с ошибкой PHPunit, когда выполняю запрос на получение.
Ошибка, которую я получаю:
ErrorException: неопределенная переменная: проект
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: Undefined variable: project».






В вашем методе контроллера show вы, кажется, вызываете compact($project), но функция compact работает иначе.
compact принимает имя переменной, а не саму переменную.
См. : https://www.php.net/manual/en/function.compact.php
Решение будет:
compact правильно:public function show() {
$project = Project::findOrFail(request('project'));
return view('projects.show' , compact('project'));
}
compact (рекомендуется):public function show() {
$project = Project::findOrFail(request('project'));
return view('projects.show' , [
'project' => $project
]);
}