【问题标题】:Laravel 5.3 - Avoid sending slack notification in phpunit testLaravel 5.3 - 避免在 phpunit 测试中发送松弛通知
【发布时间】:2017-01-01 10:38:26
【问题描述】:

所以我有一个测试设置,可以访问注册页面并提交表单。然后测试通过token验证账号。

验证帐户后,将通过SlackMessage 发送通知。

我想知道的是如何拦截它,并阻止松弛消息实际发送 - 仅在运行测试时,但获得某种确认通知确实被调用。

【问题讨论】:

  • 不能模拟通知发送类吗?
  • 我想我可以。从来不知道嘲笑甚至存在。好吧,我有很多新事情要做:) 我对测试很陌生。结束了 Notification::shouldReceive('send')->once();这似乎工作得很好。谢谢:)

标签: php laravel laravel-5 laravel-5.3


【解决方案1】:

我在 Laravel 5.3 MockApplicationServices 特征中发现了一个未记录的方法 expectsNotifications()。它的工作原理与documented event mocking 几乎相同。

用法是:

$this->expectsNotification($notifiable, $notification);

// eg.
$this->expectsNotification($user, UpperLimitExceeded::class);

还有 $this->withoutNotifications() 可以跳过任何遇到的通知。

【讨论】:

  • 这是我能找到的对expectsNotification 的唯一引用。非常感谢!
【解决方案2】:

如果您需要跳过发送所有通知,请将以下行放在测试方法的开头:

$this->withoutNotifications();

【讨论】:

    【解决方案3】:

    我最终只是为任何想知道的人做Notification::shouldReceive('send')->once();。我猜这是模拟通知门面的正确方法:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 1970-01-01
      • 2021-12-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多