У меня есть тест с этим кодом
Event::fake();
Queue::fake();
// Fake an order
$order = factory(Order::class)->make();
event(new PaymentWasCompleted($order));
Event::assertDispatched(PaymentWasCompleted::class, function ($e) use ($order) {
return $e->order->id === $order->id;
});
Queue::assertPushed(GenerateInvoiceJob::class, function ($job) use ($order) {
return $job->order->id === $order->id;
});
Мой EventServiceProvider выглядит следующим образом:
protected $listen = [
\App\Events\PaymentWasCompleted::class => [
\App\Listeners\GenerateInvoice::class,
]
];
И слушатель GenerateInvoice выглядит так:
public function __construct()
{
$this->eventName = 'GenerateInvoice';
}
public function handle(PaymentWasCompleted $event)
{
// Access the order using $event->order
$order = $event->order;
$job = (new GenerateInvoiceJob($order, $this))->onQueue(app('QueueHelper')->getQueueName($this->eventName));
$this->dispatch($job);
}
Я ожидаю, что тест пройдёт, но он не пройдёт:
Ожидаемое задание [App \ Jobs \ GenerateInvoiceJob] не было отправлено.
Я не уверен, почему это так.
Я тоже пробовал
Queue::assertPushedOn(app('QueueHelper')->getQueueName('GenerateInvoice'), GenerateInvoiceJob::class, function ($job) use ($order) {
return $job->order->id === $order->id;
});
тот же вопрос.