2017-09-14 5 views
0

私はいくつかの予期しないメッセージで応答する可能性がある俳優のためのテストを持っていますが、最終的に特定の既知のメッセージで応答する必要があります。私はDataFetchCompleteメッセージの前にいくつかの他のメッセージを得るためakka.netテストキットでいくつかのメッセージを期待し、他の人を無視するには?

[TestMethod] 
    [TestCategory("Integration")] 
    public async Task Should_fetch_fund_shareclass_and_details_from_test_service() 
    { 

     var testIsins = new HashSet<string> {"isin1", "isin2", "isin3"}; 

     var props = Props.Create(() => new DataFetchSupervisor()); 

     var actor = Sys.ActorOf(props, "fetchSupervisor"); 
     Within(TimeSpan.FromSeconds(30),() => 
     { 
      actor.Tell(new StartDataFetch(testIsins)); 

      //ignore unexpected messages here 

      var fetchComplteMsg = ExpectMsg<DataFetchComplete>(); 

     }); 
    } 

だから今、これは失敗します。 だから、本質的に私はいくつかのタイムスパンでの内の他のメッセージを無視するが、そのような知られているメッセージを、期待して主張をしたいです。

いつものおかげで、どんなヘルプもありがとうございます。

答えて

1

Akka.TestKitクラスには、さまざまなバージョンのExcpectMsgまたは同等のチェッカーがあります。あなたが探しているものはおそらくFishForMessageです。述語を受け取り、述語の条件を渡すことができない限り、すべての着信メッセージを無視します。合格メッセージが見つかると、このチェックは完了し、コードは続行されます。

+0

このように、その機能についてはわかりませんでした。それは本当に素晴らしい場所です。ありがとう、非常に感謝します。 –

1

TestKit.IgnoreMessagesメソッドを使用することもできます。これは、対象のメッセージを待っている間に無視するメッセージの種類を指定する代理関数を受け入れます。

関連する問題