我正在尝试为一种模型测试我的存储方法,并且测试没有调度使它们失败的事件。
public function store(StoreProject $request)
{
Log::info($request);
$project = Project::create([
'name' => $request->name,
'created_by' => $request->created_by
]);
//TODO email user about project
event(new ProjectCreated($project));
return $project;
}
我有一个ProjectCreated事件,该事件将用于某种套接字服务来通知其他人。
public function a_project_emits_a_project_created_event()
{
Event::fake();
$this->signIn($user = factory(User::class)->create());
$project = factory(Project::class)->make(['created_by' => $user->id]);
$this->json('POST','/api/v1/projects',$project->toArray());
Event::assertDispatched(ProjectCreated::class, function ($e) use ($project) {
return $e->project->id === $project->id;
});
}
我收到此错误,但不知道为什么,因为它应该是真的。
未调度预期的[App \ Events \ ProjectCreated]事件。 ✖无法断言false为真。
答案 0 :(得分:0)
您的$project
尚无ID,因为您正在使用make()
,这并未将模型存储在数据库中。
您应该捕获api调用的响应,并比较返回的$project
的api的ID,而不要与出厂的$project
进行比较