Как имитировать/имитировать событие очереди Laravel JobQueued в тесте?Php

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Как имитировать/имитировать событие очереди Laravel JobQueued в тесте?

Сообщение Anonymous »

Я хочу протестировать несколько прослушивателей событий, которые прослушивают встроенные события очереди Laravel (все события, которые находятся в пространстве имен Illuminate\Queue\Events).
Обычно , если я хочу протестировать поведение прослушивателя событий, я бы сделал что-то вроде этого:
  • Создайте событие, которое должен обработать прослушиватель.
  • Создайте экземпляр прослушивателя событий и вызовите его метод handle для события.
  • Утвердите, что действия (в этом пример отправки уведомления) выполняются правильно.

Код: Выделить всё

public function test_sends_notification_to_newly_created_user(): void
{
$user = User::factory()->create();
$event = new UserCreated($user);

$eventListener = $this->app->make(SendUserCreationNotification::class);
$eventListener->handle($event);

Notification::assertSentTo($user, WelcomeNotification::class);
}
Мой прослушиватель, который слушает событие JobQueued:

Код: Выделить всё

public function handle(JobQueued $event): void
{
$jobUuid = $event->payload()['uuid'];

if (property_exists($event->job, 'trackableJob')) {
$this->updater->setQueuedStatus($event->job->trackableJob, $jobUuid);
}
}
Когда я пытаюсь создать событие JobQueued:

Код: Выделить всё

public function test_updates_status_to_queued_in_database(): void
{
$event = new JobQueued(...); // I have to manually specify the payload (don't want to do that)
}
Я также пытался просто отправить задание и запустить его, но событие JobQueued никогда не срабатывает:

Код: Выделить всё

public function test_updates_status_to_queued_in_database(): void
{
app(Dispatcher::class)->dispatch(new TrackedJob());

$this->artisan('queue:work --once');
}
Как правильно создать событие JobQueued, чтобы протестировать свой прослушиватель?


Подробнее здесь: https://stackoverflow.com/questions/786 ... nt-in-test
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как имитировать/имитировать событие очереди Laravel JobQueued в тесте?
    Anonymous » » в форуме Php
    0 Ответы
    37 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать событие очереди Laravel JobQueued в тесте?
    Anonymous » » в форуме Php
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    33 Просмотры
    Последнее сообщение Anonymous
  • Как имитировать/имитировать события очереди Laravel в тестах?
    Anonymous » » в форуме Php
    0 Ответы
    40 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Php»