События не запускаются при запуске тестов - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь проверить метод моего магазина для одной из моих моделей, и тест не отправляет события, приводящие к их сбою.

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] не было отправлено. ✖ Не удалось утверждать, что ложь является истиной.

1 Ответ

0 голосов
/ 25 января 2019

У вашего $project еще нет идентификатора, так как вы используете make(), модель не сохраняется в базе данных.

Вы должны поймать ответ от вашего вызова API и сравнить идентификатор из API, возвращенного $project вместо сравнения с вашим заводским значением $project

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...