2017-09-18 9 views
1

私は、ユーザーがアクティブ化プロセスを実行するたびに、特定のチャネルで当社のスラックアカウント内にメッセージを送信するスラック通知クラスを持っています。デマンド通知でのLaravelテスト

システムは動作しますが、手動でテストされていますが、それはクールではありません。

public function handle(UserHasBeenActivated $event) 
{ 
    Notification::route("slack", config("services.slack.user.url")) 
     ->notify(new UserActivated($event->user)); 
} 

単純明快:

通知がUserHasBeenActivatedイベントにアタッチリスナーによって送信され、リスナーは、以下です。ここでの問題は、通知がオンデマンドであるため、テストするのが難しいということです。オンデマンド通知のテスト方法に関するドキュメントは一切ありません。現時点で

は、私はここにこだわっている:

public function it_sends_a_notification_when_an_user_is_activated() 
{ 
    Notification::fake(); 

    $user = factory(User::class)->states("deleted")->create(); 
    $user->activate(); 

    Notification::assertSentTo(
     $user, 
     UserActivated::class 
    ); 
} 

このテストが失敗もちろん、activate()方法はUserHasBeenActivated、順次すべてのリスナーのイベントをトリガし、そのうちの一つは、対応する通知を送信するものです。

オンデマンド通知のテスト方法をご存知ですか?隠されたAPIはありますか?

+0

は問題が 'UserActivated'と' UerHasBeenActivated'の違いかもしれませんか? – milo526

+0

Nope sorry typo、編集 –

+0

@ClaudioLudovicoPanetta無関係な質問ですが、どうやってこのようにスラックメッセージを送信できましたか?私の質問はここにあります:https://stackoverflow.com/questions/48278174/laravel-5-5-on-demand-notification-with-slack – Edwin

答えて

0

初心者のため

Laravelはv5.5.14に設けNotification::fake()システムを使用して匿名の通知をテストする能力を導入します。ここでは、この機能について

より:https://github.com/laravel/framework/pull/21379

関連する問題