Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知
Posted
技术标签:
【中文标题】Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知【英文标题】:Laravel 5.3 - Avoid sending slack notification in phpunit test 【发布时间】:2017-01-01 10:38:26 【问题描述】:所以我有一个测试设置,可以访问注册页面并提交表单。然后测试通过token验证账号。
验证帐户后,将通过SlackMessage
发送通知。
我想知道的是如何拦截它,并阻止松弛消息实际发送 - 仅在运行测试时,但获得某种确认通知确实被调用。
【问题讨论】:
不能模拟通知发送类吗? 我想我可以。从来不知道嘲笑甚至存在。好吧,我有很多新事情要做:) 我对测试很陌生。结束了 Notification::shouldReceive('send')->once();这似乎工作得很好。谢谢:) 【参考方案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();
。我猜这是模拟通知门面的正确方法:)
【讨论】:
以上是关于Laravel 5.3 - 避免在 phpunit 测试中发送松弛通知的主要内容,如果未能解决你的问题,请参考以下文章
如何解决致命错误:无法重新声明 view()(之前声明过?(phpunit laravel 5.3)
在链配置的命名空间 App\Entity [Symfony 5.3][PHPUnit 8.5] 中找不到类 Mock_*