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