美文网首页
Java HTTP 服务单元测试 Mock 框架: WireMo

Java HTTP 服务单元测试 Mock 框架: WireMo

作者: haitaoyao | 来源:发表于2016-02-18 20:30 被阅读2032次

    Microservice 越来越多, 如何在写 unit test 的时候简单易用的 mock 依赖的 HTTP 服务?

    第一种方案: Unitils

    Unitils 是写 Java 单元测试的神器, 简单易用, 童叟无欺.
    比如如下代码就在单元测试中成功 mock 了一个依赖的 service:

    public class MyServiceTest extends UnitilsJUnit4 {
     
        private Mock<MyService> myServiceMock;
     
    }
    

    想伪造方法返回值也就一行代码的事儿:

    myServiceMock.returns("a value").someMethod();
    

    不仅仅 mock, Unitils 其他模块对 Java 的单元测试也是非常大的补充. 但如果我就是要测试 HTTP client 访问远程 server 的那段代码怎么办? 如何一行代码伪造远程 HTTP 服务?

    神器: WireMock

    简单实用 JUnit Rule 定义一个 Rule, 指定端口, 实用 stubFor 方法非常容易在8500端口启动了一个 HTTP Server 并且当 GET http://localhost:8500/v1/catalog/service/test_service 时返回 mock response here 字符串

        @Rule
        public WireMockRule wireMockRule = new WireMockRule(8500);
    
        @Before
        public void setUp() throws IOException {
            wireMockRule.resetMappings();
            stubFor(get(urlEqualTo("/v1/catalog/service/test_service"))
              .willReturn(aResponse().withBody("mock response here")));
    
        }
    

    WireMock 不仅仅支持 HTTP 所有方法, 也支持 HTTPS 协议. 大赞.
    -- EOF --

    相关文章

      网友评论

          本文标题:Java HTTP 服务单元测试 Mock 框架: WireMo

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