私は俳優ベースのアプリケーション用のテストケースを作成しています。Akka TestKitプローブのStrictモード
今class MyActor(a: ActorRef, b: ActorRef) extends Actor {
override def receive: Receive = {
case _ =>
a ! "Got message!"
b ! "Hello!"
}
}
が、私はakka-testkit
とTestProbe
を使用していたテストケースを書くために次のように部品の一つは、大まかに定義することができます。次のようにテストケースの重要な部分が見えます:
val a = TestProbe()
val b = TestProbe()
val c = system.actorOf(Props(new MyActor(a.testActor, b.testActor)))
c ! "Message!"
a.expectMsg("Got message!")
今の問題はb
に送信されたメッセージは期待できないため、検証されなかったにもかかわらず、テストケースが通るということです。
この特定の問題を処理するテストケースの冒頭にb.expectNoMsg()
と呼ぶことができますが、どういうわけかこれは本当にスケーラブルなアプローチではないと私は認識しています(私は毎回すべての予想されるコールは非常に面倒です)。
私の質問は:厳密なモードでakka-testkit
を実行するオプションがあるので、すべてのメッセージが何とか予想される必要がありますか?好ましい方法は、TestKit
、ActorSystem
又はTestProbe
構成を介して行われるが、各テストケースを修正する必要としない任意の溶液が微細でテストを失敗する何かを
感謝をexplaination - 私はちょっと違ったことをしましたが(fixture teardownのすべてのプローブで 'expectNoMsg(0秒)')、これは間違いなくこの答えに触発されました。 –