我对特定演员进行了测试。这个actor依赖于其他一些actor,所以我用来TestProbe()
单独测试。我的问题是,我收到更多消息,然后我有兴趣在这个非常特殊的测试中进行测试。例如:
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
但所有这些方法都需要一个明确的时间参数,这似乎无关紧要,因为我的整个测试是纯粹同步的。
有没有什么方法可以完成这样的测试,希望的消息只是在所有收到的消息中?如果没有,如何改进我的设置以易于测试?