【发布时间】:2016-04-14 20:40:37
【问题描述】:
在我的 Scala 应用程序中说我有 Actor A 和 Actor B。我想在 ScalaTest 中设计一个测试用例,允许我向 Actor A 发送消息并查看它发送给 Actor B 的消息,以查看 A 是否正确处理它的数据并发送正确的给B发消息。如何测试这个?我花了很长时间才自己完成这个……但它似乎确实有效。
class A extends Actor { ... }
class B extends Actor { ... }
class C(p: TestProbe) extends B {
override def receive = {
LoggingReceive {
case x =>
println(x.toString)
p.ref ! x
}
}
}
case class MsgToB(...)
// Spec class which extends TestKit
"A" should {
"send the right message to B" {
val p = TestProbe()
val a = TestActorRef[A]
val c = TestActorRef(Props(new C(p)))
// Assume A has a reference to C. Not shown here.
a ! msg
// Assert messages
p.expectMsgType[MsgToB]
}
}
这是最好的方法吗?有更好的做法吗?
【问题讨论】:
标签: scala unit-testing akka akka-testkit