我有一个特定的演员测试。这个演员依赖于其他一些演员,所以我使用TestProbe()
进行单独测试。 我的问题是,我收到更多的消息,然后我有兴趣在这个非常特殊的测试测试。例如:Akka的TestProbe expectMsg匹配,如果期望的消息之间发送
val a = TestProbe()
val b = TestProbe()
val actor = TestActorRef(new MyActor(a.ref, b.ref))
actor ! Message(1, 2)
b.expectMsg(3)
的测试失败,因为在创建MyActor它发送某种“登记”消息给那些在构造函数。
消息3
最终到达,但断言失败 - 这不是第一条到达的消息。 我想避免声明比我需要测试的更多消息 - 这些消息可能会发生变化等,但它不是特定测试的范围。
由于TestProbe
不包含这样的方法 - 我怀疑我的测试设置可能有问题(或者更确切地说我的项目架构)。我看到有很多方法,如fishForMessage
,但所有这些都需要明确的时间参数,这似乎是不相关的,因为我的整个测试是纯同步的。
有没有什么办法可以完成这样的测试,希望所有的消息都被收到?如果没有,我的设置如何改进以易于测试?