Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知

Laravel 5.3 - Avoid sending slack notification in phpunit test

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

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

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

我最后只是为那些想知道的人做了 Notification::shouldReceive('send')->once();。我想这是模拟 Notification facade 的正确方法 :)

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

几乎相同

用法是:

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

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

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

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

$this->withoutNotifications();