Mockito返回null而不是Future.successful

时间:2017-08-04 17:31:18

标签: scala mockito playframework-2.3

我在让Mockito返回Future时会遇到一些问题,而when(urlRequest.post(any())).thenReturn(Future.successful(badOAuthResponse)) 会被映射到被测单元中。

有问题的方法是:

badOAuthQuery

其中MapbadOAuthResponse在其他地方定义的地方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上面的模拟对象。

非常感谢任何帮助!谢谢!

1 个答案:

答案 0 :(得分:0)

好的,经过大量的搔痒后,我发现了问题。事实证明,我正在模仿的对象(<foo>hello world</foo> )有两个名为WSRequestHolder的方法:postpost(body: File)。我假设我的模拟是为后一个方法调用设置的,但事实证明我需要更明确地调用该方法如下:

post[T](body: T)(implicit wrt: Writeable[T], ct: ContentTypeOf[T])