【问题标题】:Laravel testing on demand notificationLaravel 按需测试通知
【发布时间】:2018-02-26 20:59:15
【问题描述】:

我有一个 Slack 通知类,每次用户执行激活过程时,它都会在我们公司的 Slack 帐户中的特定频道中发送一条消息。

系统工作正常,但它是手动测试的,这并不酷。

通知由附加到UserHasBeenActivated 事件的侦听器发送,侦听器如下:

public function handle(UserHasBeenActivated $event)
{
    Notification::route("slack", config("services.slack.user.url"))
        ->notify(new UserActivated($event->user));
}

非常直接。这里的问题是通知是按需通知的,因此很难测试......因为没有任何关于如何测试按需通知的文档!

目前我被困在这里:

public function it_sends_a_notification_when_an_user_is_activated()
{
    Notification::fake();

    $user = factory(User::class)->states("deleted")->create();
    $user->activate();

    Notification::assertSentTo(
        $user,
        UserActivated::class
    );
}

当然这个测试失败了,activate()方法是触发事件UserHasBeenActivated和依次所有的监听器,其中一个发送相应的通知。

您知道如何测试按需通知吗?有没有我遗漏的隐藏 API?

【问题讨论】:

  • 问题可能是UserActivatedUerHasBeenActivated 的区别?
  • 不抱歉错字,已编辑
  • @ClaudioLudovicoPanetta 不相关的问题,但是您是如何设法以这种方式发送松弛消息的?我的问题在这里:stackoverflow.com/questions/48278174/…

标签: php laravel unit-testing testing phpunit


【解决方案1】:

对于新人

Laravel 在v5.5.14 中引入了使用提供的Notification::fake() 系统测试匿名通知的能力。

更多关于这个功能的信息在这里:https://github.com/laravel/framework/pull/21379

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-10-05
    • 2023-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-04
    • 2020-08-08
    • 2017-01-01
    相关资源
    最近更新 更多