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

变更日志

有关最近更改的更多信息,请参阅 CHANGELOG

贡献

有关详细信息,请参阅 CONTRIBUTING

安全性

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

致谢

许可证

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