mock打桩不生效的问题
遇到mock打桩不生效的问题
------------------我是分割线-----------------------
更新
向大佬请教了一下,本质的原因如下
1. mock的目的是为了排除外部依赖,你只管传过来一个该方法需要的参数类型,就可以。
2. 我在mock里写的Path.of,debug的时候跟踪内存地址发现,在业务代码里并不是这个对象,所以打桩无效;而你用any在外面包裹着,只要是这个类型,我就按照打桩的结果去处理。
上代码
业务代码
try {String path = StringUtils.joinWith("/", reportFile.getFilePath(), reportFile.getFileName());log.info("------------get into minIO to upload file-------------");minioService.upload(Path.of(path), file.getInputStream());//想要在这里mock一下,走到这里的时候抛异常,被捕获到以后抛出400错误log.info("------------upload file success-------------");} catch (MinioException | IOException e) {e.printStackTrace();throw new BadRequestException("attachment file upload fail");}
单元测试代码
doThrow(MinioException.class).when(minioService).upload(Path.of(anyString), any(InputStream.class));Assertions.assertThrows(BadRequestException.class, () -> attachmentService.addAttachment(HOSP_CODE, REPORT_ID, attachmentDto, multipartFile));
此时不管怎么写,都是这个错误
原因:mock打桩的时候参数不正确,这个时候不管你怎么写,这个桩点都不会出发
正确的写法:
// 注意看这里,原来是Path.of(anyString())doThrow(MinioException.class).when(minioService).upload(any(Path.class), any(InputStream.class));Assertions.assertThrows(BadRequestException.class, () -> attachmentService.addAttachment(HOSP_CODE, REPORT_ID, attachmentDto, multipartFile));
总结
参数不对,努力白费。
mock打桩不生效的问题相关推荐
- mock详细教程入门这一篇就够了(*)
前言 1.什么是mock测试 Mock 测试就是在测试活动中,对于某些不容易构造或不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法. 2.为什么要进行Mock ...
- Golang单元测试、Mock测试以及基准测试
之前参加字节跳动青训营而整理的笔记 Golang拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码. 一.单元测试 单元测试主要包括:输入.测试单元.输出.期望以及与期望的 ...
- 使用Mockito mock静态方法
在单测的时候,很多场景需要对静态方法进行mock打桩 之前在mockito2.x的时代需要借助powmock的功能 mockito在3.4.0版本也开始支持了静态方法的mock,使用方法如下 引入依赖 ...
- 【原创】如何使用Jmockit进行单元测试
如何使用jmockit进行单元测试 1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrume ...
- 从头到脚说单测——谈有效的单元测试
导语 非常幸运的是,从4月份至今,我能够全身心投入到腾讯新闻的单元测试专项任务中,从无知懵懂,到不断深入理解的过程,与开发同学互帮互助,受益匪浅.在此过程中,得到了质量总监.新闻总监和乔帮主的倾囊指导 ...
- 一文说尽Golang单元测试实战的那些事儿
导语 | 单元测试,通常是单独测试一个方法.类或函数,让开发者确信自己的代码在按预期运行,为确保代码可以测试且测试易于维护.腾讯后台开发工程师张力结合了公司级漏洞扫描系统洞犀在DevOps上探索的经验 ...
- 从头到脚说单测——谈有效的单元测试(下篇)
导读 在<从头到脚说单测--谈有效的单元测试(上篇)>中主要介绍了:金字塔模型.为何要做单测.单测的阶段及指标,在下篇中我们主要介绍关于mock.和如何不要滥用mock.用例编写的策略等更 ...
- jmockit教程_【原创】如何使用Jmockit进行单元测试
如何使用jmockit进行单元测试 1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrume ...
- jmockit,mockito和powermock
1,jmockit 在Maven pom.xml配置 1 2 3 4 5 6 <dependency> <groupId>org.jmockit</group ...
最新文章
- 代码重构之三种取代类型码(类、子类、状态对象或策略对象)的方式辨析
- 减少静态链接库的体积
- 异数OS 2017 DPDK 峰会观后感
- struts.properties属性解释
- 指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
- 除了 Coding,程序员获得收入的四大途径!
- 维护人员工具_确保丝印机顺畅使用的维护事项有哪些?
- 最全面的AndroidStudio配置指南总结-包括护眼模式
- oracle 除重更新,oracle数据库11.2.0.3升级到11.2.0.4
- 网页设计中最常用的字体
- 【蓝牙学习笔记】Arduino设置蓝牙模块HC-06 CC2540 CC2541自动初始化
- java编写蠕虫病毒_教大家编写蠕虫病毒
- HTML5百度地图规划路线,百度手机地图手动设置地图路线的方法 路线选择方法
- QNX 7.1 交叉编译 cron
- html左右滚动div隐藏部分div,只让DIV出现横向滚动条,窗口不要有滚动条
- Chrome浏览器命令行启动参数
- squad战术小队steam服务器搭建教程。
- c盘扩容提示簇被标记_垃圾文件正在吞噬你的C盘空间!用这四种方法,还你一个干净的C盘...
- 企业级负载均衡集群——lvs的DR模式(直接路由模式)详细说明
- vue+element-ui中实现多层级复杂的维度根据数据自动生成的表头