1

我正在尝试使用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));

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

4

1 回答 1

1

WireMockRule总是在 localhost 上启动服务器。它不是为连接到远程 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)));
于 2016-09-27T15:24:02.470 回答