加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 在Mockito中保留默认值

发布时间:2020-12-14 05:38:34 所属栏目:Java 来源:网络整理
导读:如何存储一个方法,以便在给出一个我不期望的值时,它返回一个默认值? 例如: MapString,String map = mock(Map.class);when(map.get("abcd")).thenReturn("defg");when(map.get("defg")).thenReturn("ghij");when(map.get(anyString())).thenReturn("I don't
如何存储一个方法,以便在给出一个我不期望的值时,它返回一个默认值?

例如:

Map<String,String> map = mock(Map.class);
when(map.get("abcd")).thenReturn("defg");
when(map.get("defg")).thenReturn("ghij");
when(map.get(anyString())).thenReturn("I don't know that string");

第2部分:如上所述但抛出异常:

Map<String,String> map = mock(Map.class);
when(map.get("abcd")).thenReturn("defg");
when(map.get("defg")).thenReturn("ghij");
when(map.get(anyString())).thenThrow(new IllegalArgumentException("I don't know that string"));

在上述示例中,最后一个存根优先,因此映射将始终返回默认值.

解决方法

我找到的最好的解决方案是扭转存根的顺序:
Map<String,String> map = mock(Map.class);
when(map.get(anyString())).thenReturn("I don't know that string");
when(map.get("abcd")).thenReturn("defg");
when(map.get("defg")).thenReturn("ghij");

当默认是抛出一个异常时,你可以使用doThrow和doReturn

doThrow(new RuntimeException()).when(map).get(anyString());
doReturn("defg").when(map).get("abcd");
doReturn("ghij").when(map).get("defg");

http://docs.mockito.googlecode.com/hg/org/mockito/Mockito.html#doReturn%28java.lang.Object%29

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读