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

时间:2016-09-27 14:02:34

标签: java spring wiremock integration-testing

我正在尝试使用 WireMockRule 来模拟远程主机的请求,但我被困了。目前我正在嘲笑本地主机的请求如下:

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

  ...

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

这些适用于localhost。但是当我尝试做类比的时候

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

它没有用,事件测试没有开始。所以我想问你们,也许有人会知道我做错了什么?感谢

1 个答案:

答案 0 :(得分:1)

WireMockRule始终在localhost上启动服务器。它不是为连接远程WireMock服务器而设计的。你可以从它的来源看到这一点。

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

通常,无论您是否使用@Rule,WireMock的设计者都希望您使用WireMock类上的静态方法,而不是{{1}的成员方法object:

WireMockRule