2016-08-25 78 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();