우선, 나는 Akka 액터의 단위 테스트 방법을 묻지 않을 것입니다. 나는 그 기술을 알고 있습니다. 내 문제는 약간 다릅니다.단위 테스트 Akka 액터를 사용하는 구성 요소
저는 Scala 프로그램을 개발 중입니다.이 프로그램은 Akka 액터를 사용하지 않고 client
이라고 부릅니다. 그러나이 프로그램은 라이브러리를 사용하므로이 인터페이스를 Akka Actor를 사용하여 구현 한 server
이라고합시다.
문의 패턴을 통해 client
은 server
과 상호 작용합니다.
// This is the client program
class Client(uri: String) {
implicit val context: ActorSystem = ActorSystem("client-actor-system")
private val mainActor = context.actorSelection(uri)
def connect: Future[SomeClass] = {
implicit val timeout: Timeout = Timeout(5 seconds)
(mainActor ? Connect()).mapTo[CreationResponse]
}
}
이제 Client
클래스의 단위 테스트를 기록해 두겠습니다. 단위 테스트는 클래스를 독립적으로 테스트하는 것을 의미합니다. 모든 외부 의존성을 조롱해야합니다.
클래스의 mainActor
에 대한 참조를 모의 할 수 있습니까? 액터 시스템에 mainActor
의 모의 액터를 삽입하려면 어떻게해야합니까?
미리 감사드립니다.
귀하의 접근 방식이 옳고 하나만 있다고 가정합니다. 내가 좋아하지 않는 유일한 점은 Akka의 사용이 더 이상 '클라이언트'클래스에 숨겨져 있지 않다는 것입니다. –
대안은 액터를 빌드하는 팩토리 메소드를 생성하는 것이며, 테스트에서 그것을 대체하여'probe.ref'를 리턴합니다. –