Метод assertDispatched
Метод assertDispatched применяется для проверки отправки команд через шину
в тестах. Первым параметром передаётся класс команды, вторым - замыкание
для дополнительной проверки экземпляра команды. Метод возвращает объект
с информацией о диспатче, который можно использовать для дальнейших утверждений.
Синтаксис
<?php
Bus::assertDispatched($commandClass, $callback = null);
?>
Пример
Давайте протестируем, что команда 'ProcessOrder' была отправлена:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Support\Facades\Bus;
use App\Jobs\ProcessOrder;
class OrderTest extends TestCase
{
public function test_order_is_dispatched()
{
Bus::fake();
$order = new Order();
$order->process();
Bus::assertDispatched(ProcessOrder::class);
}
}
?>
Результат выполнения кода:
"Test passed: ProcessOrder was dispatched"
Пример
Давайте проверим, что команда была отправлена с определёнными параметрами:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Support\Facades\Bus;
use App\Jobs\ProcessOrder;
class OrderTest extends TestCase
{
public function test_order_with_specific_data()
{
Bus::fake();
$order = new Order();
$order->setId(5);
$order->process();
Bus::assertDispatched(ProcessOrder::class, function ($job) {
return $job->orderId === 5;
});
}
}
?>
Результат выполнения кода:
"Test passed: ProcessOrder with orderId 5 was dispatched"
Пример
Давайте проверим, что команда была отправлена несколько раз:
<?php
namespace Tests\Unit;
use Tests\TestCase;
use Illuminate\Support\Facades\Bus;
use App\Jobs\ProcessOrder;
class OrderTest extends TestCase
{
public function test_multiple_orders_dispatched()
{
Bus::fake();
for ($i = 1; $i <= 3; $i++) {
$order = new Order();
$order->setId($i);
$order->process();
}
Bus::assertDispatched(ProcessOrder::class, function ($job) {
return $job->orderId === 2;
});
}
}
?>
Результат выполнения кода:
"Test passed: ProcessOrder with orderId 2 was dispatched"
Смотрите также
-
класс
Bus,
который предоставляет фасад для работы с шиной -
метод
fake,
который создаёт фальшивую реализацию шины -
метод
assertPushed,
который проверяет отправку задач в очередь -
метод
assertDispatched,
который проверяет отправку событий