Итак, у меня определены классы событий и слушателей, а также они зарегистрированы в массиве $ listen в EventServiceProvider.php. Вот код:
use App\Events\EpisodeCreated;
use App\Listeners\NewEpisodeListener;
use Event;
class EventServiceProvider extends ServiceProvider {
protected $listen = [
EpisodeCreated::class => [
NewEpisodeListener::class
]
];
}
, а затем в методе загрузки EventServiceProvider у меня есть следующее:
public function boot() {
Episode::created(function($episode) {
Event::fire(new EpisodeCreated($episode));
});
}
вот класс событий EpisodeCreated:
namespace App\Events;
use App\Models\Episode;
class EpisodeCreated extends Event {
public $episode;
public function __construct(Episode $episode) {
$this->episode = $episode;
}
}
и, наконец, слушатель:
namespace App\Listeners;
use App\Events\EpisodeCreated;
use App\Facades\EventHandler;
use App\Http\Resources\ShowResource;
class NewEpisodeListener {
public function __construct() {
}
public function handle(EpisodeCreated $event) {
EventHandler::sendNewEpisode((new ShowResource($event->episode->show))->toArray());
}
}
Наконец, я написал следующий модульный тест, чтобы убедиться, что событие запускается. Похоже, это не так:
public function testNewEpisodeEventFiredOff() {
Event::fake();
$show = factory(Show::class)->create();
$episode = factory(Episode::class)->create(['show_id' => $show->id]);
Event::assertDispatched(EpisodeCreated::class);
}
Я получаю сообщение об ошибке, говорящее, что событие никогда не отправлялось, когда я запускаю phpunit. Также я добавил операторы echo debug, и пока создается объект EpisodeCreated, NewEpisodeListener не запускается. Ребята, будем рады любой помощи.