mock打桩不生效的问题

这篇具有很好参考价值的文章主要介绍了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打桩不生效的问题

原因: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));

总结

参数不对,努力白费。文章来源地址https://www.toymoban.com/news/detail-505293.html

到了这里,关于mock打桩不生效的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【PowerMockito:编写单元测试过程中采用when打桩失效的问题】

    正如上图所示,采用when打桩了,但是,实际执行的时候还是返回null。 打桩时直接用any() 但是这样可能出现一个mybatisplus的异常,所以在测试类中需要加入以下代码片段:

    2024年02月02日
    浏览(28)
  • 详解JUnit单元测试框架(打桩测试待更新)示例代码有格式问题,待更新

    单元测试负责对最小的软件设计单元(模块)进行验证,根据软件设计文档中对模块功能的描述,对重要的程序分支进行测试并发现错误。 对于单元测试框架来讲,它主要完成以下几件事。 提供用例组织与执行: 测试用例只有几条时,可以不考虑用例组织,但是用例达到成

    2024年02月05日
    浏览(42)
  • java中,如何解决@NotBlank不生效的问题 @NotBlank @NotEmpty不生效,以及对象嵌套问题...

    这篇文章主要介绍了如何解决@NotBlank不生效的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教。 1.解决@NotBlank不生效 最近做一个新项目,写新接口时发现@NotBlank @NotEmpty不生效,@NotNull则生效,令人费解。仔细检查一下2步骤 用法

    2024年02月11日
    浏览(30)
  • 一文看懂单元测试中的打桩

    目录 一、概念 二、目的 三、方法 编译时打桩 链接时打桩 运行时打桩 函数打桩,就是将一个函数用另一个函数实现(桩代码)进行替换,以达到在原有函数入口的位置执行新的实现。 函数打桩的目的一般是隔离、占位和控制。 隔离是指将测试任务从产品项目中分离出来,使

    2024年02月04日
    浏览(30)
  • .gitignore文件不生效问题;

    1.原因是因为在git忽略目录中,新建的文件在git中会有缓存,如果某些文件已经被纳入了版本管理中,就算是在.gitignore中已经声明了忽略路径也是不起作用的, 这时候我们就应该先把本地缓存删除,然后再进行git的提交,这样就不会出现忽略的文件了。 例子:如.gitignore文件

    2024年02月12日
    浏览(49)
  • @Validated注解不生效问题汇总

    项目框架应用的是validation进行检验的,但是最近一直不生效,然后排查了下问题,总结了失效的常见几个原因: 原因1: 在2.3.0版本之前spring-boot-starter-web是集成了validation检验的 但是在2.3.0开始就去掉了该依赖,所以需要自己添加该依赖。 添加依赖为: 原因2: 参数如果是非

    2024年02月16日
    浏览(33)
  • 【问题分析解决】git添加.gitignore后不生效问题

    在已经提交过的git管理的项目中,新增加一个.gitignore文件,或者修改.gitignore文件之后,新增的内容不生效。 因为我们误解了.gitignore文件的用途,该文件只能作用于Untracked Files,也就是那些从来没有被 Git 记录过的文件(自添加以后,从未 add 及 commit 过的文件)。 之所以你

    2024年02月14日
    浏览(34)
  • @Validated注解不生效问题汇总大全

    项目框架应用的是validation进行检验的,但是最近一直不生效,然后排查了下问题,总结了失效的常见几个原因: 在2.3.0版本之前spring-boot-starter-web是集成了validation检验的 但是在2.3.0开始就去掉了该依赖,所以需要自己添加该依赖, 添加依赖为: 下面截图对照下: 2.7.2版本

    2024年02月11日
    浏览(31)
  • Mac屏保不生效问题的解决

    1.有时我们明明在Mac上设置了屏保,但离开电脑一段时间后发现并没有触发屏保。可以检查一下在设置-电池-电池中,是否将时间设置比屏保的时间长,否则会还没等到启动屏保,就自动关闭显示器,便出现看不到屏保的情况。 可以将此时间调大一些,以便防止因电脑黑屏中

    2024年02月14日
    浏览(24)
  • 【问题】3.解决Nginx改变配置文件后不生效问题

    目录 问题描述 : 解决方案: 一般修改完配置文件,执行下面命令就可以生效 或者: 都可以 执行了上述操作没有用 重启nginx也没有用 inux解决方案: 1.杀死所有进程: 2.启动nginx 如果无效,就用 命令查找出所有nginx的进程,再kill 掉主进程即可 其他常用命令:   启动nginx: 

    2024年02月13日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包