小不点传奇 2020-09-24 18:11 采纳率: 0%
浏览 399

UT单元里,如何用jmockit工具来mock业务代码中的feignClient的调用啊?

公司突然要求写测试用例,然后我在网上查阅了相关资料,主要为jmockit和

mockito
两种方式,后来种种尝试后觉得jmockit更上手,于是后期一直沿用,各种得心应手。但是最近某个业务需要内部调用另一个工程的接口,结果就一直卡在这里了。

业务类IopActivitySVImpl部分代码如下:

     @Autowired
     private CapabilityFeignClient capabilityFeignClient;


     String activityId = req.getActivityId();
     String dealComment = req.getDealComment();
     AuditResultFeedbackReq resultFeedbackReq = getAuditResultFeedbackReq(activityId, dealType, req.getDealComment(), actInfo.getFlow());
    capabilityFeignClient.auditIopActivity(resultFeedbackReq);

然后我在测试类IopActivityControllerTest里面是这样mock:

//调用外部接口进行mock
     @Autowired
     private CapabilityFeignClient capabilityFeignClient;

     new Expectations(capabilityFeignClient){
            {
                capabilityFeignClient.auditIopActivity(withAny(new AuditResultFeedbackReq()));
                result = resultFeedbackResp;
            }
        };

执行覆盖率后报错,new Expectations(capabilityFeignClient) 不支持接口类型的录制
于是我又创建了一个CapabilityFeignClient的实现类capabilityFeignClientStub,并给了别名,如下:

@Component("capabilityFeignClient")
public class CapabilityFeignClientStub implements CapabilityFeignClient {      
       方法返回null, 此处代码省略。。。
}

然后在CapabilityFeignClient接口的注解里加上 “qualifier”属性,值为上面的实现类别名

@FeignClient(value = "capability-manager-mp", qualifier = "capabilityFeignClient")
public interface CapabilityFeignClient {
    代码省略..
}

最后在测试类IopActivityControllerTest和业务类IopActivitySVImpl中注入
@Autowired private CapabilityFeignClient capabilityFeignClient的地方又追加了@Qualifier("capabilityFeignClient")
变为:

    @Autowired
    @Qualifier("capabilityFeignClient")  --此注解为追加,与feign实现类的别名保持一致
    private CapabilityFeignClient capabilityFeignClient;

但是最后执行测试类覆盖率时还是失败了,这次报错原因是,业务代码走到调用feign时未执行我预期录制的代码块(new Expectations(capabilityFeignClient){}里面的内容)

一直尝试,一直不成功,困扰了我好几天了,求大佬帮忙看一下。

  • 写回答

1条回答 默认 最新

  • threenewbee 2020-09-24 19:36
    关注
    评论

报告相同问题?

悬赏问题

  • ¥30 YOLO检测微调结果p为1
  • ¥20 求快手直播间榜单匿名采集ID用户名简单能学会的
  • ¥15 DS18B20内部ADC模数转换器
  • ¥15 做个有关计算的小程序
  • ¥15 MPI读取tif文件无法正常给各进程分配路径
  • ¥15 如何用MATLAB实现以下三个公式(有相互嵌套)
  • ¥30 关于#算法#的问题:运用EViews第九版本进行一系列计量经济学的时间数列数据回归分析预测问题 求各位帮我解答一下
  • ¥15 setInterval 页面闪烁,怎么解决
  • ¥15 如何让企业微信机器人实现消息汇总整合
  • ¥50 关于#ui#的问题:做yolov8的ui界面出现的问题