验证从actor返回的多条消息

时间:2015-11-03 15:47:50

标签: scala akka akka-testkit

akka-testkit问题。

有人可以建议如何在收到消息x时验证该演员'A',并回复了两条消息 - y和z。

消息x,y,z都是不同的类型。

我没有看到任何合适的'expect *'函数来支持这样的测试。

P.S 请参阅Scala中的代码示例。 感谢。

1 个答案:

答案 0 :(得分:2)

实际上你可以使用
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  
}