我正在使用 Scalamock 和 Scalatest 为 Play 应用程序编写单元测试。
我的原始代码如下所示:
// Here ws is an injected WSClient
val req = Json.toJson(someRequestObject)
val resp: Future[WSResponse] = ws.url(remoteURL).post(Json.toJson(req))
在一部分中,我必须模拟对 Web 服务的外部调用,我正在尝试使用 scalamock:
ws = stub[WSClient]
wsReq = stub[WSRequest]
wsResp = stub[WSResponse]
ws.url _ when(*) returns wsReq
wsReq.withRequestTimeout _ when(*) returns wsReq
(wsReq.post (_: java.io.File)).when(*) returns Future(wsResp)
我能够成功地使用文件模拟发布请求,但我无法使用 JSON 模拟发布请求。
我尝试单独放置存根函数引用,例如:
val f: StubFunction1[java.io.File, Future[WSResponse]] = wsReq.post (_: java.io.File)
val j: StubFunction1[JsValue, Future[WSResponse]] = wsReq.post(_: JsValue)
我得到第二行的编译错误:Unable to resolve overloaded method post
我在这里想念什么?为什么我不能模拟一种重载方法而不模拟另一种?