我正在以测试驱动的方式编写代码,在编写了许多测试之后,我引入了一个新的参与者,并且在我的测试环境中我使用了一个 TestProbe。现在在第 n 次测试中,我正在测试新演员是否收到一条消息。但他实际收到的消息并不是预期的,因为他在预期的消息之前收到了许多来自其他测试的消息。那么有没有办法告诉 TestProbe 忘记到现在收到的所有消息,而不指定数字,并从现在开始收听消息?
一些代码:
class MyTest extends TestKit(ActorSystem("test")) {
var myActorRef: ActorRef = _
var myTestProbe = TestProbe()
before {
myActorRef = system.actorOf(MyActor.props(myTestProbe.ref))
}
"MyActor" must {
//.... many tests here
"trigger notification to myTestProbe" in {
// here I would like myTestProbe to forget all the messages he received before
myActorRef ! AMessageThatShoudCauseAnotherMessageToBeSentToMyProbe(..)
myProbe.expectMsg(
TheExpectedMessage(...) //this fails, because the message received has been sent before this test.
)
}
我可以,myTestProbe.receiveN(200)
但我需要确切的消息数量,如果我之前添加另一个测试,这个数字可能会改变......这真的很糟糕。
我还可以重新创建 testProbe 和被测演员:
myTestProbe = TestProbe()
myActorRef = system.actorOf(MyActor.props(myTestProbe.ref))
但出于其他原因,我宁愿避免它......还有其他建议吗?