0

我正在以测试驱动的方式编写代码,在编写了许多测试之后,我引入了一个新的参与者,并且在我的测试环境中我使用了一个 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))

但出于其他原因,我宁愿避免它......还有其他建议吗?

4

0 回答 0