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){}里面的内容)

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

https://blog.csdn.net/weixin_43221845/article/details/84847016