2016-09-27 81 views
0

我试图模拟使用WireMockRule远程主机的请求,我被困住了。目前我嘲笑请求本地主机象下面这样: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)); 

它doesny工作,事件测试不启动。所以我想问你们,也许有人会知道我做错了什么?谢谢

回答

0

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))); 
+0

但我需要嘲笑请求不存在主机(当我运行集成测试主机离线)..它甚至有可能吗? –

+0

如果你想在远程主机上启动WireMock服务器,你必须自己做。 WireMock没有提供为您启动远程主机上的服务器。 – slim

相关问题