암묵적인 매개 변수가 관련되어있을 때 스칼라에서 테스트를 작성하는 방법을 이해하려고 힘든 시간을 보내고 있습니다.암시 적 매개 변수를 조롱하는 스칼라 테스트?
내 코드와 테스트의 다음 (짧은 버전)이 있습니다
구현 (스칼라 2.10, 스프레이 및 Akka) : (ScalaTest 및 Mockito 사용)
import spray.httpx.SprayJsonSupport._
import com.acme.ResultJsonFormat._
case class PerRequestIndexingActor(ctx: RequestContext) extends Actor with ActorLogging {
def receive = LoggingReceive {
case AddToIndexRequestCompleted(result) =>
ctx.complete(result)
context.stop(self)
}
}
object ResultJsonFormat extends DefaultJsonProtocol {
implicit val resultFormat = jsonFormat2(Result)
}
case class Result(code: Int, message: String)
테스트 :
을"Per Request Indexing Actor" should {
"send the HTTP Response when AddToIndexRequestCompleted message is received" in {
val request = mock[RequestContext]
val result = mock[Result]
val perRequestIndexingActor = TestActorRef(Props(new PerRequestIndexingActor(request)))
perRequestIndexingActor ! AddToIndexRequestCompleted(result)
verify(request).complete(result)
}
}
이 줄의 verify(request).complete(result)
은 암시 적 Marshaller를 사용하여 Result
을 JSON으로 변환합니다.
implicit val marshaller: Marshaller[Result] = mock[Marshaller[Result]]
을 추가하여 marshaller를 가져올 수 있지만 테스트를 실행할 때 Marshaller의 다른 인스턴스가 사용되므로 확인이 실패합니다.
명시 적으로 모의 Marshaller를 complete
으로 전달하더라도 실패합니다.
암시 적 매개 변수에 대한 mock 객체를 만드는 방법을 조언하고 인스턴스가 사용 된 인스턴스인지 확인하십시오.
명시 적으로 모의를 통과하는 데 어떻게 실패합니까? 왜 처음에는 모의 마샬 러를 사용하고 싶습니까? (나는 모치 토를 사용하지 않았기 때문에 바보 같은 질문이라면 실례합니다.) – jrudolph