美文网首页
依赖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