使用Mockito我遇到了以下问题:
Mockito.when(restOperationMock.exchange(
Mockito.anyString(),
Mockito.any(HttpMethod.class),
Mockito.any(HttpEntity.class),
Mockito.eq(CustomerResponse.class),
**Mockito.anyMap()**)).
thenReturn(re);
Run Code Online (Sandbox Code Playgroud)
问题是该方法没有截获,因为我使用Mockito.any(Map.class)而不是Mockito.anyMap(),我作为参数传递HashMap.Mockito.any(Map.class)和Mockito.anyMap()之间有什么区别?
Jef*_*ica 10
any(Map.class)和之间只有一个小的区别anyMap():从Mockito 2.0开始,Mockito会将any(Map.class)调用视为意思isA(Map.class)而不是完全忽略参数.(请参阅Mockito撰稿人Brice关于此SO答案的评论.)因为restOperationMock.exchange需要使用Object vararg,您可能需要anyMap捕获传递非Map对象的情况,或者根本不传递任何对象.
(我以前把它作为一个"虚拟值"返回,Mockito可以返回一个空的Map来调用anyMap(),但是只能返回一个nullfor来调用any(Map.class).如果restOperationMock.exchange在存根期间委托给一个真正的实现,比如它是一个spy或unmockable方法(最终方法,最终类的方法等),然后该虚拟值可以在实际代码中使用.但是,这只适用于any(); anyMap()并且any(Map.class)两者都给Mockito足够的信息来返回虚拟Map实现,其中any()有它的泛型已经删除,只知道足以返回null.)
| 归档时间: |
|
| 查看次数: |
19184 次 |
| 最近记录: |