播放 - Akka:Actor 测试

Play - Akka: Actors testing

我读过 Akka 提供的 TestKit、TestActorRef 和 ImplicitSender。但是我没有找到一种方法来检查某个演员是否收到了某个消息。我认为 "expectMsg(Foo)" 如果接收者执行 "sender ! Foo" 会很有用。 但我的应用程序不同:我有一个演员 A 向另一个演员 B 发送消息。比 B 通过 WebSocket 向 Java 客户端发送消息。当 B 收到回复时,会将其转发给参与者 C。 如何检查 C 是否收到该消息(可能在某个超时时间内)?谢谢。

没有代码很难给出具体的答案,但是你可以创建一个TestProbe来代替演员C。

val actorCProbe = TestProbe()

val actorB = system.actorOf(Props(classOf[ActorB], actorCProbe.ref))

那么您就可以使用测试探针上期望的所有标准测试套件了:

actorB ! testMsg

actorCProbe.expectMsg(500 millis, "result")