mockito5.4.0单元测试(11) --do when家族的方法们:doReturn()|doThrow()| doAnswer()| donnothing ()|doCallRealMethod()
mockito官方文档地址: https://www.javadoc.io/doc/org.mockito/mockito-core/latest/org/mockito/Mockito.html#do_family_methods_stubs
// mock一个对象
HashMap mockMap = mock(HashMap.class);
doCallRealMethod方法示例:
// 当mock对象调用put和size方法时,都调用真实的方法
doCallRealMethod().when(mockMap).put(anyString(), any());
doCallRealMethod().when(mockMap).size();
mockMap.put("key1", "value1");
mockMap.put("key2", "value2");
log.info("print0: size = {}", mockMap.size());
doThrow方法示例:
try {
doThrow(new RuntimeException()).when(mockMap).get("0");
log.info("print1: {}", mockMap.get("0"));
} catch (Exception e) {
log.error("doThrow...when mockMap.get(\"0\")");
}
doReturn方法示例:
doReturn("aaa-value").when(mockMap).get("aaa");
log.info("print1: {}", mockMap.get("aaa"));
doAnswer方法示例:
doAnswer(new Answer() {
public Object answer(InvocationOnMock invocation) {
Object[] args = invocation.getArguments();
Object mock = invocation.getMock();
return "自定义返回值: " + Arrays.toString(args); // 可以自定义返回值
}
}).when(mockMap).get("bbb");
log.info("print2: {}", mockMap.get("bbb")); // 自定义返回值: bbb
doNothing方法示例:
doCallRealMethod().when(mockMap).put(anyString(), any());
doCallRealMethod().when(mockMap).size();
mockMap.put("key1", "value1");
mockMap.put("key2", "value2");
doNothing().when(mockMap).clear(); // 如果调用clear,则什么都不做
mockMap.clear(); // 这里什么都不做
log.info("print3: size = {}", mockMap.size()); // 因为clear什么都没做,所以这里打印的是size=2
try {
doNothing(). // 第一次调用clear什么都不做
doThrow(new RuntimeException()) // 第二次调用clear的时候报错
.when(mockMap).clear();
mockMap.clear();// 第一次调用clear什么都不做
log.info("print4: mockMap.clear()");
mockMap.clear();// 第二次调用clear的时候报错\
log.info("print5: 这一条日志应该打印不出来了");
} catch (Exception e) {
log.error("doThrow...when mockMap.clear()");
}
end.

分类:
mockito单元测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2022-06-26 java字符串固定长度,左补空格,或右补空格
2020-06-26 kafka2.5.0硬件集群架构图、Topic主题与Partitions分区架构图