我正在用Laravel学习PHPUnit,并且陷入了错误。 我一直在与Laracasts的Laravel一起跟踪TDD,并且在我执行get请求时遇到PHPunit错误。
得到的错误是:
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));
}
和视图(projects目录中的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:未定义的变量:项目”
答案 0 :(得分:2)
在控制器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
]);
}