Класс Queue
Класс Queue применяется в тестах Laravel для эмуляции очередей. Он предоставляет методы для подмены реального драйвера очереди на фейковый, что позволяет проверять, какие задачи были поставлены в очередь, без их фактического выполнения. Основные методы: fake для создания фейковой очереди, assertPushed для проверки отправки задачи, assertPushedTimes для проверки количества отправок.
Синтаксис
<?php
Queue::fake();
?>
Пример
Давайте создадим фейковую очередь и проверим, что задача отправлена:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Support\Facades\Queue;
use App\Jobs\SendEmailJob;
class JobTest extends TestCase
{
public function test_job_is_pushed()
{
Queue::fake();
SendEmailJob::dispatch();
Queue::assertPushed(SendEmailJob::class);
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Проверим, что задача была отправлена с определенными данными:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Support\Facades\Queue;
use App\Jobs\ProcessOrderJob;
use App\Models\Order;
class OrderTest extends TestCase
{
public function test_order_job_has_correct_data()
{
Queue::fake();
$order = Order::factory()->create(['amount' => 100]);
ProcessOrderJob::dispatch($order);
Queue::assertPushed(ProcessOrderJob::class, function ($job) use ($order) {
return $job->order->id === $order->id;
});
}
}
?>
Результат выполнения кода:
"Test passed"
Пример
Проверим количество отправок задачи в очередь:
<?php
namespace Tests\Feature;
use Tests\TestCase;
use Illuminate\Support\Facades\Queue;
use App\Jobs\SendNotificationJob;
class NotificationTest extends TestCase
{
public function test_job_is_pushed_multiple_times()
{
Queue::fake();
SendNotificationJob::dispatch();
SendNotificationJob::dispatch();
Queue::assertPushedTimes(SendNotificationJob::class, 2);
}
}
?>
Результат выполнения кода:
"Test passed"
Смотрите также
-
класс
Queue::fake,
который создает фейковую очередь для тестирования -
метод
assertPushed,
который проверяет отправку задачи в очередь -
класс
Mail,
который используется для тестирования отправки писем -
класс
Bus,
который используется для тестирования отправки команд