Tôi đang có một chút thời gian khó khăn khi cố gắng hiểu cách viết các bài kiểm tra trong Scala khi các tham số ngầm được tham gia.Scala thử nghiệm mocking tham số ngầm định?
tôi có như sau (phiên bản ngắn) của mã và thử nghiệm của tôi:
thực hiện (Scala 2.10, Phun và Akka):
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)
Test (Sử dụng ScalaTest và Mockito):
"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)
}
}
Dòng này, verify(request).complete(result)
sử dụng trình ẩn ngữ Marshaller để biến Result
thành JSON.
Tôi có thể đưa một trình soạn thảo vào phạm vi bằng cách thêm implicit val marshaller: Marshaller[Result] = mock[Marshaller[Result]]
nhưng khi tôi chạy thử nghiệm, một ví dụ khác của Marshaller được sử dụng, do đó xác minh không thành công.
Thậm chí chuyển rõ ràng mô hình Marshaller đến complete
không thành công.
Vì vậy, bất kỳ ai có thể tư vấn cách tạo đối tượng giả cho một tham số ngầm định và đảm bảo rằng trường hợp đó là thông số được sử dụng?
Làm cách nào để chuyển mô hình không thành công? Tại sao bạn muốn sử dụng một marshaller giả ở nơi đầu tiên? (Tôi đã không sử dụng mockito vì vậy xin vui lòng tha cho tôi nếu đó là những câu hỏi ngu ngốc) – jrudolph