我正在以测试驱动的方式编写代码,在编写了许多测试之后,我引入了一个新的actor,在测试环境中,我使用了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))
但是由于其他原因,我还是希望避免使用它……还有其他建议吗?