Mockito returns null 而不是 Future.successful
Mockito returns null instead of Future.successful
我在将 Mockito 设置为 return a 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()
return 之前的所有先前方法调用都很好,但是单步执行该行,response
设置为 null
.
之后 NullPointerException
实际被触发的行是:
response.map { resp =>
很明显问题是之前那行response
设置为null
,但是不知道为什么Mockito没有return成功Future
包含上面的模拟对象。
如有任何帮助,我们将不胜感激!谢谢!
好吧,经过一番摸索,我终于找到了问题所在。事实证明,我正在模拟的对象 (WSRequestHolder
) 有两个名为 post
的方法:post(body: File)
和 post[T](body: T)(implicit wrt: Writeable[T], ct: ContentTypeOf[T])
。我曾假设我的 mock 是为后面的方法调用设置的,但事实证明我需要更明确地调用该方法,如下所示:
when(urlRequest.post[Map[String, Seq[String]]](any())(any(), any())
.thenReturn(Future.successful(badOAuthResponse))
我在将 Mockito 设置为 return a 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()
return 之前的所有先前方法调用都很好,但是单步执行该行,response
设置为 null
.
之后 NullPointerException
实际被触发的行是:
response.map { resp =>
很明显问题是之前那行response
设置为null
,但是不知道为什么Mockito没有return成功Future
包含上面的模拟对象。
如有任何帮助,我们将不胜感激!谢谢!
好吧,经过一番摸索,我终于找到了问题所在。事实证明,我正在模拟的对象 (WSRequestHolder
) 有两个名为 post
的方法:post(body: File)
和 post[T](body: T)(implicit wrt: Writeable[T], ct: ContentTypeOf[T])
。我曾假设我的 mock 是为后面的方法调用设置的,但事实证明我需要更明确地调用该方法,如下所示:
when(urlRequest.post[Map[String, Seq[String]]](any())(any(), any())
.thenReturn(Future.successful(badOAuthResponse))