Не следите за тем, как тестировать события трансляции в laravel - PullRequest
0 голосов
/ 28 января 2020

Итак, рассмотрим следующее событие:

class UpdateApprovedClinicianCountBroadcastEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets;

    public $count;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct(int $count)
    {
        $this->count = $count;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new PresenceChannel('approved-clinician-count');
    }
}

Ничего сложного здесь нет.

Итак, в соответствии с документами вот как я должен тестировать это событие:

public function testBroadCastShouldEmit() {
    Event::fake();

    $count = 1;

    Event::assertDispatched(UpdateApprovedClinicianCountBroadcastEvent::class, function ($e) use ($count) {
        $e->count === $count;
    });
}

Но я получаю:

Тесты \ Единица \ Здоровье \ Наборы данных \ Строители \ UpdateApprovedClinicianCountBroadcastEventTest x широкое приведение должно выдать [0,360 с]

Время: 503 мс, память: 30,00 МБ

Произошел 1 сбой:

1) Тесты \ Unit \ Health \ Datasets \ Builders \ UpdateApprovedClinicianCountBroadcastEventTest :: testBroadCastShouldEmit Ожидаемый [App \ Modules \ Clinics \ Events \ Событие UpdateApprovedClinicianCountBroadcastEvent] не было отправлено. Не удалось утверждать, что значение false равно true.

/ Users / xxx / Documents / health / vendor / laravel / framework / src / Подсветка / Поддержка / Тестирование / Fakes / EventFake. php: 62 / Users / xxx / Документы / здоровье / поставщик / Laravel / Framework / SRC / Освещение / Поддержка / Фасады / Фасад. php: 261 /Users/xxx/Documents/health/tests/Unit/Modules/Clinics/Events/UpdateApprovedClinicianCountBroadcastEventTest.php: 31

Итак, как вы тестируете события трансляции? Должен ли я назвать событие? Этот метод отправки вызывает меня? Как будто я запутался .

1 Ответ

0 голосов
/ 28 января 2020

Из laravel документов :

Для отправки события вы можете передать экземпляр события помощнику по событию. Помощник отправит событие всем зарегистрированным слушателям. Поскольку помощник событий доступен по всему миру, вы можете вызывать его из любого места в вашем приложении:

event(new UpdateApprovedClinicianCountBroadcastEvent($count))

И тест будет следующим, чтобы подтвердить, что он отправлен:

public function testBroadCastShouldEmit() {
    event(new UpdateApprovedClinicianCountBroadcastEvent(1))
    Event::assertDispatched(UpdateApprovedClinicianCountBroadcastEvent::class)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...