【问题标题】:Wiremock does not respondWiremock 没有响应
【发布时间】:2020-06-22 15:02:29
【问题描述】:

我对一些外部资源存根的 rest api 微服务器进行了集成测试。它们中的大多数都可以工作,但有一个特定的在测试期间变得不可用。

  • 其他测试以相同的方式存根
  • 当直接从测试发送请求或在测试位于 Thread.sleep() 中时从邮递员调用时,给定存根工作
  • 当从测试调用的微服务之一发送与上述相同的请求时,如果微服务暂停(在调试断点处暂停),则从邮递员发送相同的请求时,存根不起作用。其他存根在这些条件下工作。
@ClassRule
public static WireMockRule wireMockRule = new WireMockRule(
        wireMockConfig()
            .port(8080)
            .usingFilesUnderDirectory("src/integration-test/resources"));
       public static void stubExtService(WireMockRule wireMockRule) {
                wireMockRule.stubFor(post(urlPathEqualTo("/my/url"))
                    .willReturn(aResponse().withHeader("Content-Type", "application/json")
                        .withStatus(200)
                        .withBodyFile("json/response.json")));
        }

【问题讨论】:

  • 是的,一个错字。在问题文本中修复它。

标签: java spring spring-boot wiremock


【解决方案1】:

听起来问题在于测试正在完成并且 WireMock 在异步操作完成之前关闭。在这种情况下,您可以使用Awaitility 等待(轮询)预期的请求。

这是 WireMock 测试中的一个示例: https://github.com/tomakehurst/wiremock/blob/master/src/test/java/com/github/tomakehurst/wiremock/PostServeActionExtensionTest.java#L85

【讨论】:

    【解决方案2】:

    虽然我还没有在代码中找到它,但我的入口点服务正在响应,然后异步处理请求。同时,测试正在接收响应并与WireMock一起关闭,微服务无法再访问模拟的资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多