最近單元測(cè)試時(shí)碰到需要mock feginClient的接口
因?yàn)轫?xiàng)目中存在fegin的hystrix辣垒,在mock的時(shí)候會(huì)裝在其中一個(gè)bean , cloud中的fegin是接口而hystrix又是接口的實(shí)現(xiàn)印蔬,所以在測(cè)試的時(shí)候會(huì)報(bào)錯(cuò):
java.lang.IllegalStateException: Unable to register mock bean?..* expected a single matching bean to replace but found [..client,..clientHystrix]
其實(shí)測(cè)試啟動(dòng)@mockbean會(huì)使用自己裝載的bean替換項(xiàng)目中的 找到了兩個(gè)類似實(shí)體會(huì)失敗勋桶。
解決:
在hystrix中增加@Profile("!test")對(duì)測(cè)試時(shí)忽略裝載的狀態(tài)
在test Class中加入@ActiveProfiles("test")? 保證hystrix在測(cè)試時(shí)不會(huì)被檢測(cè)裝載 也就不會(huì)和相應(yīng)的Fegin發(fā)生沖突