2016-08-25 21 views
5

これで、登録ページにアクセスしてフォームを送信するテストが設定されています。その後、テストはトークンでアカウントを検証します。Laravel 5.3 - phpunitテストでスラック通知を送信しないようにする

アカウントが確認されると、SlackMessageで通知が送信されます。

どのように私はこれを傍受して実際に送信することからスラックメッセージを止めることができるのだろうと思っていました - テストを実行しているときだけ通知が実際に呼び出されたという何らかの確認を得ます。

+2

はあなたがクラスを送信する通知を模擬することはできませんか? –

+0

私はできると思います。嘲笑が存在することは決して知らなかった。まあ、私は新しいことがたくさんある:私は非常にテストするために新しいです。通知を行うと終了しました:: shouldReceive( 'send') - > once();これはかなりうまくいくようです。ありがとう:) – Pistachio

答えて

7

Laravel 5.3のMockApplicationServices特性では、文書化されていないメソッドexpectsNotifications()が見つかりました。それはdocumented event mockingとほとんど同じです。

使い方は次のとおりです。

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

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

ます$ this-> withoutNotifications()は任意の遭遇通知をスキップすることもあります。

+0

これは文字通り私が見つけることができた 'expectsNotification'への唯一の言及です。どうもありがとうございます! – Meriw

1

不思議に思っている人のためにNotification::shouldReceive('send')->once();をやってしまいました。私は推測のファサードを模倣する正しい方法だと思います:)

2

あなたはすべての通知の送信をスキップする必要がある場合は、あなたのテストメソッドの先頭に次の行を置く:

$this->withoutNotifications();

関連する問題