-1

akka-testkit の質問です。

メッセージ x を受信したときに、アクター「A」が y と z の 2 つのメッセージで応答したことを検証する方法について、アドバイスをいただけないでしょうか。

メッセージ x、y、z はすべて異なるタイプです。

このようなテストをサポートする適切な 'expect*' 関数が見つかりません。

ps Scala でのコード例をお願いします。ありがとう。

4

1 に答える 1

3

実際に使用できます
expectMsgAllClassOf[T](d: Duration, c: Class[_ <: T]*): Seq[T]
完全な例:

case class X(i:Int)  
case class Y(i:Int)  
case class Z(i:Int)

class UnderTest extends Actor {  
 def receive {  
   case x:X =>
     sender ! Y(1)
     sender ! Z(1)
  }
}  

class MyTest extends AkkaTestKit with ImplicitSender {  

val beingTested = system.actorOf(Props[UnderTest])
beingTested ! X(1)

val receivedMsgs = expectedMsgAllClassOf(classOf[Y],classOf[Z])

// Your received messages are in the receivedMsgs sequence first is Y //second is Z
//you can extract them and validating the exact result with assertions  
}
于 2015-11-04T08:24:13.600 に答える