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();
所以我有一个访问注册页面并提交表单的测试设置。然后测试通过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();