遇到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打桩不生效的问题相关推荐

  1. mock详细教程入门这一篇就够了(*)

    前言 1.什么是mock测试 Mock 测试就是在测试活动中,对于某些不容易构造或不容易获取的比较复杂的数据/场景,用一个虚拟的对象(Mock对象)来创建用于测试的测试方法. 2.为什么要进行Mock ...

  2. Golang单元测试、Mock测试以及基准测试

    之前参加字节跳动青训营而整理的笔记 Golang拥有一套单元测试和性能测试系统,仅需要添加很少的代码就可以快速测试一段需求代码. 一.单元测试 单元测试主要包括:输入.测试单元.输出.期望以及与期望的 ...

  3. 使用Mockito mock静态方法

    在单测的时候,很多场景需要对静态方法进行mock打桩 之前在mockito2.x的时代需要借助powmock的功能 mockito在3.4.0版本也开始支持了静态方法的mock,使用方法如下 引入依赖 ...

  4. 【原创】如何使用Jmockit进行单元测试

    如何使用jmockit进行单元测试 1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrume ...

  5. 从头到脚说单测——谈有效的单元测试

    导语 非常幸运的是,从4月份至今,我能够全身心投入到腾讯新闻的单元测试专项任务中,从无知懵懂,到不断深入理解的过程,与开发同学互帮互助,受益匪浅.在此过程中,得到了质量总监.新闻总监和乔帮主的倾囊指导 ...

  6. 一文说尽Golang单元测试实战的那些事儿

    导语 | 单元测试,通常是单独测试一个方法.类或函数,让开发者确信自己的代码在按预期运行,为确保代码可以测试且测试易于维护.腾讯后台开发工程师张力结合了公司级漏洞扫描系统洞犀在DevOps上探索的经验 ...

  7. 从头到脚说单测——谈有效的单元测试(下篇)

    导读 在<从头到脚说单测--谈有效的单元测试(上篇)>中主要介绍了:金字塔模型.为何要做单测.单测的阶段及指标,在下篇中我们主要介绍关于mock.和如何不要滥用mock.用例编写的策略等更 ...

  8. jmockit教程_【原创】如何使用Jmockit进行单元测试

    如何使用jmockit进行单元测试 1. Jmockit简介 JMockit 是用以帮助开发人员编写测试程序的一组工具和API,它完全基于 Java 5 SE 的 java.lang.instrume ...

  9. jmockit,mockito和powermock

    1,jmockit 在Maven pom.xml配置 1 2 3 4 5 6   <dependency>     <groupId>org.jmockit</group ...

最新文章

  1. 代码重构之三种取代类型码(类、子类、状态对象或策略对象)的方式辨析
  2. 减少静态链接库的体积
  3. 异数OS 2017 DPDK 峰会观后感
  4. struts.properties属性解释
  5. 指纹特征点提取代码matlab代码,科学网—MATLAB特征提取代码 - 蒋样明的博文
  6. 除了 Coding,程序员获得收入的四大途径!
  7. 维护人员工具_确保丝印机顺畅使用的维护事项有哪些?
  8. 最全面的AndroidStudio配置指南总结-包括护眼模式
  9. oracle 除重更新,oracle数据库11.2.0.3升级到11.2.0.4
  10. 网页设计中最常用的字体
  11. 【蓝牙学习笔记】Arduino设置蓝牙模块HC-06 CC2540 CC2541自动初始化
  12. java编写蠕虫病毒_教大家编写蠕虫病毒
  13. HTML5百度地图规划路线,百度手机地图手动设置地图路线的方法 路线选择方法
  14. QNX 7.1 交叉编译 cron
  15. html左右滚动div隐藏部分div,只让DIV出现横向滚动条,窗口不要有滚动条
  16. Chrome浏览器命令行启动参数
  17. squad战术小队steam服务器搭建教程。
  18. c盘扩容提示簇被标记_垃圾文件正在吞噬你的C盘空间!用这四种方法,还你一个干净的C盘...
  19. 企业级负载均衡集群——lvs的DR模式(直接路由模式)详细说明
  20. vue+element-ui中实现多层级复杂的维度根据数据自动生成的表头

热门文章

  1. kafka启动异常InconsistentClusterIdException
  2. Android太太太太太卷了,累了,android开发入门与实战体验
  3. 【KV260】K26 SOM烧写脚本
  4. quartus错误集锦(未完待续)
  5. 电化学传感器原理回顾
  6. eureka核心知识梳理
  7. Ctrl+Z 撤销 撤多了 砍手之前先修复!!
  8. 计算机软件专业英语考试题,计算机水平考试-软件设计师分类模拟题计算机专业英语(二)...
  9. 世界著名汽车公司谱系
  10. 卖保健产品怎么引流?关于做男性保健品怎么引流的详细介绍