美文网首页
依赖Feign Client的单元测试

依赖Feign Client的单元测试

作者: 十毛tenmao | 来源:发表于2020-12-29 21:44 被阅读0次

    最近项目组在推动单元测试,要求覆盖率提升到60%,但是很多的业务流程都依赖远程调用(Feign Client),所以测试时,需要mock这些远程调用的行为。

    完整示例

    • Feign Client接口
    @FeignClient(value = "baidu")
    public interface BaiduApi {
        @GetMapping("index.html")
        String index();
    }
    
    • 上层业务逻辑
    @Component
    public class BaiduManager {
        @Resource
        private BaiduApi baiduApi;
    
        public String getIndex() {
            return baiduApi.index();
        }
    }
    
    • 单元测试
      @MockBean会生成一个Mock对象,并取代已存在的相同类型的单例bean,如果不存在则添加
    @SpringBootTest
    class BaiduManagerTest {
        @Resource
        private BaiduManager baiduManager;
    
        @MockBean(name = "com.tenmao.utdemo.BaiduApi")
        private BaiduApi baiduApi;
    
        @Test
        void getIndex() {
            Mockito.when(baiduApi.index()).thenReturn("baidu index");
    
            String index = baiduManager.getIndex();
            Assertions.assertEquals("baidu index", index);
        }
    }
    

    常见错误

    • Mock对象并没有取代实际对象:@MockBean(name = "com.tenmao.utdemo.BaiduApi")需要设置name为全限定符

    参考

    相关文章

      网友评论

          本文标题:依赖Feign Client的单元测试

          本文链接:https://www.haomeiwen.com/subject/bpwqoktx.html