-1
akka-testkit問題。驗證演員返回的多條消息
有人建議我如何在接收到消息x時驗證該角色'A',並回復了兩條消息-y和z。
消息x,y,z都是不同的類型。
我沒有看到任何合適的'expect *'函數來支持這樣的測試。
p.s 請在Scala中的代碼示例。 謝謝。
akka-testkit問題。驗證演員返回的多條消息
有人建議我如何在接收到消息x時驗證該角色'A',並回復了兩條消息-y和z。
消息x,y,z都是不同的類型。
我沒有看到任何合適的'expect *'函數來支持這樣的測試。
p.s 請在Scala中的代碼示例。 謝謝。
其實你可以使用
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
}
你能提供什麼,你已經嘗試過 –
A級擴展演員{ 的代碼片段高清接收{ 情況下,x:x => <做點事..> 發送! Y() 發件人! Z() .... } } 我使用ImplicitSender特徵混入我的測試類,以捕獲所有返回的消息。 我可以看到 'expectMsgAllOf [T](d:Duration,obj:T *):Seq [T]'或'expectMsgAllClassOf [T](d:Duration,c:Class [_ <:T] *): Seq [T]' 正在等待相同類型或超類型的消息,但在我的情況下,從A角色返回的消息類型是不同的。 –