不遵循如何在 laravel 中测试广播事件



因此请考虑以下事件:

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 IlluminateBroadcastingChannel|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;
});
}

但我得到:

测试\

单元\运行状况\数据集\构建器\更新批准临床医生计数广播事件测试 x 宽投射应发出 [0.360s]

时间: 503 毫秒, 内存: 30.00 MB

有 1 个失败:

1( Tests\Unit\Health\Datasets\Builders\UpdateApprovedClinicianCountBroadcastEventTest::testBroadCastShouldEmit 预期的 [App\Modules\Clinics\Events\UpdateApprovedClinicianCountBroadcastEvent] 未调度事件。未能断言假为真。

/Users/xxx/Documents/health/vendor/laravel/framework/src/Illuminate/Support/Testing/Fakes/EventFake.php:62/Users/xxx/Documents/health/vendor/laravel/framework/src/Illuminate/Support/Facades/Facade.php:261/Users/xxx/Documents/health/tests/Unit/Modules/Clinics/Events/UpdateApprovedClinicianCountBroadcastEventTest.php:31

那么,如何测试广播事件呢?我应该打电话给事件吗?此调度方法是否为我调用它?就像我很困惑

来自 laravel 文档:

要调度事件,您可以将事件的实例传递给 事件帮助程序。帮助程序会将事件调度到其所有 注册的侦听器。由于事件帮助程序全局可用, 您可以从应用程序中的任何位置调用它:

event(new UpdateApprovedClinicianCountBroadcastEvent($count))

测试将如下所示,以断言它已发送:

public function testBroadCastShouldEmit() {
event(new UpdateApprovedClinicianCountBroadcastEvent(1))
Event::assertDispatched(UpdateApprovedClinicianCountBroadcastEvent::class)
}

最新更新