2016-08-25 80 views
5

所以我有一个测试设置一个访问注册网页并提交表单。然后测试通过令牌验证帐户。Laravel 5.3 - 避免在PHPUnit的测试发送松弛通知

一旦该帐户已被验证,通知通过SlackMessage发送。

什么我不知道是我怎么可以拦截这一点,并从实际发送停止松弛消息 - 运行测试,只有当,但得到某种确认,该通知并在事实上被调用。

+2

你不能嘲笑通知发送类? –

+0

我想我可以。从来不知道嘲笑甚至存在。那么我有一堆新的事情要做:)我很新的测试。完成通知:: shouldReceive('send') - > once();这似乎工作得很好。谢谢:) – Pistachio

回答

7

我发现了一个未公开的方法expectsNotifications()在Laravel 5.3 MockApplicationServices特质。它的作用几乎与documented event mocking相同。

用法为:

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

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

还有$这个 - > withoutNotifications()跳过遇到的任何通知。

+0

这实际上是我能够找到的'expectsNotification'的唯一参考。非常感谢! – Meriw

1

最后我只是在做Notification::shouldReceive('send')->once();的人谁的疑惑。我的猜测是嘲笑通知门面:)正确的方式

2

如果需要跳过发送的所有通知,把下面一行在您的测试方法的开头:

$this->withoutNotifications();