저는 액터 기반 응용 프로그램을위한 테스트 케이스를 작성하고 있습니다.Akka TestKit 프로브의 엄격한 모드
지금class MyActor(a: ActorRef, b: ActorRef) extends Actor {
override def receive: Receive = {
case _ =>
a ! "Got message!"
b ! "Hello!"
}
}
, 나는 akka-testkit
및 TestProbe
을 사용하고 테스트 케이스를 작성하는 다음과 같이 구성 요소 중 하나는 대략 정의 할 수 있습니다.
val a = TestProbe()
val b = TestProbe()
val c = system.actorOf(Props(new MyActor(a.testActor, b.testActor)))
c ! "Message!"
a.expectMsg("Got message!")
지금 문제가 테스트 케이스가
b
에 보낸 메시지는 예상하지 따라서 검증되지 않은에도 불구하고, 전달하는 것입니다 다음과 같이 테스트 케이스의 중요한 부분이 보인다.
이 특정 문제를 처리 할 테스트 케이스의 시작 부분에 b.expectNoMsg()
을 호출 할 수 있다는 것을 알고 있지만 어쨌든 이것이 실제로 확장 가능한 접근 방식이 아니라고 생각합니다. (필자는 이후에 매번 추가해야 할 것입니다. 기대되는 모든 호출은 매우 복잡합니다.)
제 질문은 엄격한 모드에서 akka-testkit
을 실행하여 모든 메시지가 어떻게 든 예상 될 수 있도록하는 옵션이 있습니까? 바람직한 방법 TestKit
, ActorSystem
또는 TestProbe
구성을 통해이지만, 각 테스트 케이스에 수정이 필요하지만한 솔루션 괜찮 테스트 실패 뭔가
감사합니다 explaination - 약간 다른 점 (fixture teardown의 모든 프로브에 대해'expectNoMsg (0 seconds)')을했지만, 확실히이 대답에 영감을 받았습니다. –