Я разрабатываю приложение Laravel и пишу тесты по ходу дела. Теперь у меня возникла проблема с написанием теста, который утверждает, запускается ли событие, когда запускается красноречивое событие модели. Вот что я делаю.
Это созданная мной функция ItemObserver
public function created(Item $item)
{
event(new NewItemCreated($item));
}
Как видите, я запускаю событие внутри созданного события красноречивого наблюдателя модели.
Если я хочу подтвердить, запускается ли событие в тесте, я должен подделать событие, а затем подтвердить что-то вроде этого.
Event::fake();
factory(Item::class)->create(); //created function of observer should be triggered but it will not be
Event::assertDispatched(NewItemCreated::class);
Как вы можете видеть в тестовом коде, я пытаюсь утверждать, что если событие запускается при создании элемента. Но тест никогда не пройдет, потому что созданная функция класса наблюдателя никогда не вызывается, потому что Событие подделано в тесте. Как я могу протестировать этот сценарий?