制作一个TestProbe可以忘记所有杂物

时间:2018-06-25 08:47:49

标签: scala akka testkit

我正在以测试驱动的方式编写代码,在编写了许多测试之后,我引入了一个新的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))

但是由于其他原因,我还是希望避免使用它……还有其他建议吗?

0 个答案:

没有答案