java - WireMockRule 在集成测试中不适用于非本地主机

标签 java spring wiremock integration-testing

我正在尝试使用 WireMockRule 模拟远程主机的请求,但我陷入了困境。目前我正在模拟对本地主机的请求,如下所示:

  @Rule
  public WireMockRule wireMockRule = new WireMockRule(80);

  ...

  wireMockRule.stubFor(post(urlPathEqualTo("/api/users"))
   .willReturn(aResponse()
   .withStatus(200)));

这些对于本地主机来说可以正常工作。然而,当我尝试类比时

@Rule
public WireMockRule wireMockRule = new WireMockRule(wireMockConfig().bindAddress("remote").port(80));

它不起作用,事件测试没有开始。所以我想问一下大家,也许有人知道我做错了什么?谢谢

最佳答案

WireMockRule始终在本地主机上启动服务器。它不是为连接到远程 WireMock 服务器而设计的。您可以从其来源中看到这一点。

要将 WireMock 客户端配置为针对远程服务器运行,请勿使用 @Rule 。只需输入 WireMock.configureFor("my.remote.host", 8000);在测试初始化​​的构造函数中。

通常,您是否使用 @Rule无论是否,WireMock 的设计者希望您使用 WireMock 上的静态方法。类,而不是 WireMockRule 的成员方法对象:

 import static com.github.tomakehurst.wiremock.client.WireMock.*;

 ...

 stubFor(post(urlPathEqualTo("/api/users"))
   .willReturn(aResponse()
       .withStatus(200)));

关于java - WireMockRule 在集成测试中不适用于非本地主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39726787/

相关文章:

java - Spring依赖注入(inject)

java - 获取Spring boot中当前代理的引用

javascript - 模拟 REST API 和假域名

java - 当文件大小发生变化时,Struts DiskFile.getInputStream() 返回 ByteArrayInputStream 和 FileArrayInputStream

java - 如何在 pom 中查找未使用的属性

java - 如何在多个 mongo 存储库上使用 QueryDSL?

java - 如何在 WireMock 中成功代理 HTTPS 端点?

java - 从 JUnit 测试时间中排除 @Before 方法持续时间

java - JSch 算法协商仅在单元测试中失败