spring-cloud feginClient unit testing @mockbean

最近单元测试时碰到需要mock feginClient的接口

因为项目中存在fegin的hystrix,在mock的时候会装在其中一个bean , cloud中的fegin是接口而hystrix又是接口的实现,所以在测试的时候会报错:


java.lang.IllegalStateException: Unable to register mock bean ..* expected a single matching bean to replace but found [..client,..clientHystrix]


其实测试启动@mockbean会使用自己装载的bean替换项目中的 找到了两个类似实体会失败。

解决:

在hystrix中增加@Profile("!test")对测试时忽略装载的状态

在test Class中加入@ActiveProfiles("test")  保证hystrix在测试时不会被检测装载 也就不会和相应的Fegin发生冲突

你可能感兴趣的:(spring-cloud feginClient unit testing @mockbean)