alibayat/laravel-test-broadcaster

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

v0.1 2020-04-09 18:18 UTC

This package is auto-updated.

Last update: 2024-09-20 14:10:51 UTC


README

Latest Version on Packagist GitHub Tests Action Status Total Downloads

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

此项目是从 jlndk/laravel-test-broadcaster 分支出来的。

安装

  1. 通过composer安装包。
composer require alibayat/laravel-test-broadcaster
  1. 将测试广播添加到 app/config/broadcasting.php 文件中的 connections 数组。
'connections' => [
    ...
    'test' => [
        'driver' => 'test'
    ],
],
  1. phpunit.xml 文件的 php 元素中设置测试的默认广播器。
<php>
    ...
    <env name="BROADCAST_DRIVER" value="test"/>
</php>
  1. 最后,将 AliBayat\TestBroadcaster\CanTestBroadcasting 特性添加到 tests/TestCase.php 文件。
use AliBayat\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->assertEventBroadcasted(TestEvent::class);
}

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

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

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

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

assertEventBroadcasted 方法还可以断言事件被广播到哪些频道。它可以接受单个字符串,用于单个频道,也可以接受频道名称数组。

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

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

    try {
        $this->assertEventBroadcasted(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)。请参阅许可文件获取更多信息。