Wiremock:如何从wiremock中的文件中读取存根?

问题描述 投票:0回答:3

目前我正在通过我的 java 代码在我的存根中设置请求和响应,如下所示。

wireMockRule.stubFor(WireMock.get(WireMock.urlEqualTo("/abc/xyz"))
                .willReturn(WireMock.aResponse()
                        .withBody("Hey")
                        .withStatus(HttpStatus.OK.value())
                        .withHeader("Content-Type",
                                "application/text")));

我想知道是否有可能在 json 文件中定义所有存根配置,如下所示,然后在我的 java 代码中读取它。

{
  "request": {
    "method": "GET",
    "url": "/abc/xyz"
  },
  "response": {
    "status": 200,
    "jsonBody": {"Hey"},
    "headers": {
      "Content-Type": "application/test"
    }
  }
}

我在很多帖子中读到了有关映射文件夹的内容。我不确定那是什么以及如何获取它以及它对我的用例有何帮助?

另外,我读到了有关主体文件名的信息,但这只是对响应主体有帮助,而我希望找到一个有助于处理文件中的整个存根的解决方案。

一个有效的 Java 示例会非常有帮助。

wiremock stubbing
3个回答
2
投票

存根文件(src/test/resources):

内容文件(stub.json):


0
投票

实际上,wiremock 的底层只是读取文件并将它们映射到 POJO。通过查看库源代码可以看到这一点(JsonFileMappingsSource.loadMappingsInto)。

所以要达到同样的效果,你可以这样做:

private static StubMappingCollection deserialize(String fileContent) {
    return com.github.tomakehurst.wiremock.common.Json.read(
        fileContent,
        StubMappingCollection.class);
}

0
投票

您还可以通过这种方式设置存根的自定义路径(版本3.3.1):

@Test
public void anyTest(WireMockRuntimeInfo runtimeInfo) {
    final WireMock wireMock = runtimeInfo.getWireMock();
    wireMock.loadMappingsFrom(rootDir);
}
© www.soinside.com 2019 - 2024. All rights reserved.