Сделайте TestProbe, чтобы забыть все мессы
Я пишу код тестируемым способом, и после написания множества тестов я представил нового актера, и в своей тестовой среде я использую для него 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))
но по другим причинам я бы предпочел избежать этого... любое другое предложение?