0


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();thrownewBadRequestException("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));

总结

参数不对,努力白费。


本文转载自: https://blog.csdn.net/qq_40192304/article/details/127977259
版权归原作者 P城执法官 所有, 如有侵权,请联系我们删除。

“mock打桩不生效的问题”的评论:

还没有评论