我在让Mockito返回Future
时会遇到一些问题,而when(urlRequest.post(any())).thenReturn(Future.successful(badOAuthResponse))
会被映射到被测单元中。
有问题的方法是:
badOAuthQuery
其中Map
是badOAuthResponse
在其他地方定义的地方WSResponse
是在别处定义的模拟val response = client.url(oAuthUrl).withHeaders(headers: _*).post(requestMap)
。
问题所在的行是:
client
其中WSClient
是一个模拟的.post()
,其方法存在其他地方。
我已经在POST请求的某处缩小了问题范围。单步执行调试器会在response
返回正常之前显示所有先前的方法调用,但是越过该行,null
将设置为NullPointerException
。
之后,实际触发response.map { resp =>
的行是:
response
显然问题是null
之前已经设置为Future
,但我不知道为什么Mockito没有返回成功的AllText
上面的模拟对象。
非常感谢任何帮助!谢谢!
答案 0 :(得分:0)
好的,经过大量的搔痒后,我发现了问题。事实证明,我正在模仿的对象(<foo>hello world</foo>
)有两个名为WSRequestHolder
的方法:post
和post(body: File)
。我假设我的模拟是为后一个方法调用设置的,但事实证明我需要更明确地调用该方法如下:
post[T](body: T)(implicit wrt: Writeable[T], ct: ContentTypeOf[T])