首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mockito和Mockito.any(Map.class)

Mockito和Mockito.any(Map.class)
EN

Stack Overflow用户
提问于 2016-02-16 23:54:07
回答 1查看 34.1K关注 0票数 14

使用Mockito时,我遇到了以下问题:

代码语言:javascript
复制
Mockito.when(restOperationMock.exchange(
      Mockito.anyString(),     
      Mockito.any(HttpMethod.class),
      Mockito.any(HttpEntity.class),  
      Mockito.eq(CustomerResponse.class),
      **Mockito.anyMap()**)).
    thenReturn(re);

问题是该方法没有被截获,因为我使用的是Mockito.any(Map.class)而不是Mockito.anyMap(),并且我将HashMap作为参数传递。Mockito.any(Map.class)Mockito.anyMap()之间的区别是什么

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-17 02:10:50

any(Map.class)anyMap()之间只有一个小的区别:从Mockito2.0开始,Mockito会将any(Map.class)调用视为isA(Map.class),而不是完全忽略该参数。(参见Mockito投稿人布里斯在this SO answer上的评论。)由于映射,您可能需要anyMap来捕捉传递非restOperationMock.exchange takes an Object vararg对象或根本没有传递对象的情况。

(我之前将其作为一个“虚拟值”返回,Mockito可以为调用anyMap()返回一个空的映射,但只能为调用any(Map.class)返回一个null。如果在存根过程中restOperationMock.exchange委托给一个真实的实现,比如如果它是一个间谍或不可模仿的方法(最终方法、最终类上的方法等),那么可以在实际代码中使用该虚拟值。然而,这只适用于any()anyMap()any(Map.class)都给了Mockito足够的信息来返回一个虚拟的Map实现,在这个实现中,any()擦除了它的泛型,只知道返回null。)

票数 17
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35437077

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档