Laravel 5.3 - 避免在 PHPUnit 测试中发送 Slack 通知

6

我已经设置了一个测试,访问注册页面并提交表单。然后测试通过令牌验证账户。

一旦验证了帐户,就会通过 SlackMessage 发送通知。

我想知道如何拦截这个过程,并阻止 Slack 消息实际发送 - 只有在运行测试时,但是需要得到某种确认,通知确实被调用。


2
你不能模拟通知发送类吗? - Can Vural
我想我可以。从来不知道嘲笑甚至存在。好吧,我有很多新事情要做 :) 我对测试还很陌生。最终使用了Notification::shouldReceive('send')->once();,看起来效果不错。谢谢 :) - Pistachio
3个回答

10

我在 Laravel 5.3 MockApplicationServices trait 中发现了一个未记录的方法 expectsNotifications()。它的工作原理与文档中记录的事件模拟基本相同。

用法如下:

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

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

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


这是我能找到的关于“expectsNotification”的唯一参考。非常感谢! - Meriw

2
如果您需要跳过发送所有通知,请在测试方法的开头放置以下行: $this->withoutNotifications();

1
我最终只是执行了 Notification::shouldReceive('send')->once();,如果有人想知道的话。我猜这就是模拟通知门面的正确方式 :)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接