2016-07-18 28 views
0

Wiremock的新版本2.1.7改变了很多。通过在运行时以编程方式添加存根,以前的某些方法似乎不再适用于直接方法。如何在版本2.1.7中添加stubMapping到Wiremock服务器?

例如,我可以在1.57版本中添加存根这样的:

private void setStub(WireMockServer server, String url, RequestMethod requestMethod, Object body) 
throws JsonProcessingException { 

    UrlMatchingStrategy urlStrategy = new UrlMatchingStrategy(); 
    urlStrategy.setUrl(url); 

    ObjectMapper mapper = new ObjectMapper(); 
    String jsonInString = mapper.writeValueAsString(body); 

    StubMapping mapping = new MappingBuilder(requestMethod, urlStrategy).willReturn(
    new ResponseDefinitionBuilder().withHeader("Access-Control-Allow-Origin", "*").withBody(jsonInString)).build(); 

    server.addStubMapping(mapping); 
} 

我怎样才能实现这个目标的2.1.7? (是的,我阅读了文档,但是我发现只有JUnit注释,在我的情况下没有用)。

回答

0

OK,我想我终于想通了如何写同样的方法为版本2.1.7:

private void setStub(WireMockServer server, String url, RequestMethod requestMethod, Object body) 
    throws JsonProcessingException { 

    ObjectMapper mapper = new ObjectMapper(); 
    String jsonInString = mapper.writeValueAsString(body); 

    server.addStubMapping(
     WireMock.request(requestMethod.getName(), WireMock.urlMatching(url)) 
       .willReturn(WireMock.aResponse().withStatus(200).withBody(jsonInString) 
        .withHeader("Content-Type", "text/plain").withHeader("Access-Control-Allow-Origin", "*") 
        ) 
       .build()); 
} 
+0

使用静态导入,而不是说'WireMock.aResponse()'等。为了做到这一点,将代码更改为'aResponse()',然后在导入时执行静态导入。它缩短了代码,使其更具可读性。 –

+0

我需要一个“独立”版本,而不是Junit测试。因此在这种情况下使用静态导入是没有用的。 – Brain

相关问题