genl/laravel-broadcast-testing

用于测试事件广播的广播提供者

1.0.3 2020-12-04 21:28 UTC

This package is auto-updated.

Last update: 2024-09-05 06:17:57 UTC


README

Latest Version on Packagist GitHub Actions Status Total Downloads

此包允许您测试Laravel事件是否已广播。这对于TDD和端到端测试非常有用。

安装

  1. 使用composer安装此包
composer require GENL/laravel-broadcast-testing
  1. 将测试广播器添加到app/config/broadcasting.php中的connections数组中。
'connections' => [
    ...
    'test' => [
        'driver' => 'test'
    ],
],
  1. phpunit.xmlphp元素中设置测试的默认广播器。
<php>
    ...
    <env name="BROADCAST_DRIVER" value="test"/>
</php>
  1. 最后,将Genl\TestBroadcaster\CanTestBroadcasting特质添加到tests/TestCase.php中。
use Genl\TestBroadcaster\CanTestBroadcasting;
abstract class TestCase extends BaseTestCase
{
    use CanTestBroadcasting;
}

使用方法

此包将assertEventBroadcasted方法添加到您的测试中。

/**
 * @test
 */
public function it_can_assert_when_an_event_is_broadcasted()
{
    event(new TestEvent());
    $this->assertEventWasBroadcast(TestEvent::class);
}

此外,您还可以测试事件广播的次数

/**
 * @test
 */
public function it_can_assert_if_an_event_was_broadcasted_a_given_amount_of_times()
{
    event(new TestEvent());
    $this->assertEventWasBroadcast(TestEvent::class, 1);

    event(new TestEvent());
    $this->assertEventWasBroadcast(TestEvent::class, 2);
}
/**
 * @test
 */
public function it_can_assert_if_an_event_was_broadcasted_a_given_amount_of_times()
{
    event(new TestEvent());
    $this->assertEventWasBroadcast(TestEvent::class, 1);

    event(new TestEvent());
    $this->assertEventWasBroadcast(TestEvent::class, 2);
}

assertEventWasBroadcast方法还可以断言事件被广播到哪些频道。它可以接受一个字符串(单个频道)或频道名称数组。

/**
 * @test
 */
public function it_can_assert_if_an_event_was_broadcasted_on_multiple_channels()
{
    event(new TestEvent());

    // 
    $this->assertEventWasBroadcast(TestEvent::class, ['private-channel-name', 'private-another-channel-name']);

    try {
        $this->assertEventWasBroadcast(TestEvent::class, [
            'private-channel-name',
            'somethingelse-fake-channel',
        ]);
        $this->fail("assertEventBroadcasted asserted that an event was broadcasted on given channels when it wasn't");
    } catch (ExpectationFailedException $e) {
    }
}

测试

composer test

更新日志

有关最近更改的更多信息,请参阅更新日志

贡献

有关详细信息,请参阅贡献指南

安全性

如果您发现任何安全问题,请通过电子邮件(而非问题跟踪器)联系xxx。

鸣谢

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件