WireMock 在 运行 内部测试时总是 returns 连接被拒绝
WireMock always returns Connection Refused when run inside test
当我使用 testng v7.0.0 在 Cucumber 中配置 WireMockServer 时遇到问题(我认为这与此处无关)。我想调用我自己的服务, 本身 请求我定义的 url
。
当我尝试这样调用时:
@When("the service is called")
public void theServiceIsCalled() {
wireMockServer = new WireMockServer(options().port(PORT_NUMBER));
wireMockServer.start();
configureFor("127.0.0.1", wireMockServer.port());
stubFor(get(urlEqualTo(url))
.willReturn(aResponse()
.withStatus(HTTPOK)
.withHeader("Content-Type", "application/json")
.withBody(response)));
myService.callService();
}
我总是得到
java.util.concurrent.CompletionException:
javax.ws.rs.ProcessingException:
org.apache.http.conn.HttpHostConnectException: Connect to
127.0.0.1:9090 [/127.0.0.1] failed: Connection refused
我知道这不可能是 port
、url
或 headers 定义错误的问题。我这么说是因为当我 运行 一个具有完全相同的 WireMock 配置(没有服务调用)的 java 实例,然后进行测试时,它 运行 很顺利,服务 returns 事实上我已经嘲笑过。似乎 WireMockServer 生命周期必须驻留在我想要的进程之外的进程中。
怎么回事?
提前致谢;)
看来问题是由两个原因造成的:
1 - 我实际上并没有初始化 wireMockServer(初始化是在一个 BeforeAll 方法中进行的,实际上并没有被调用),对此感到抱歉。
2 - stubFor
必须用于 wireMockServer 实例。
以下是工作配置:
WireMockServer server = new WireMockServer(options().bindAddress("127.0.0.1").port(port));
server.stubFor(get(urlEqualTo(urlWithId))
.willReturn(aResponse()
.withStatus(HTTPOK)
.withHeader("Content-Type", "application/json")
.withBody(response)));
server.start()
myService.callService();
希望有人觉得这有用。
当我使用 testng v7.0.0 在 Cucumber 中配置 WireMockServer 时遇到问题(我认为这与此处无关)。我想调用我自己的服务, 本身 请求我定义的 url
。
当我尝试这样调用时:
@When("the service is called")
public void theServiceIsCalled() {
wireMockServer = new WireMockServer(options().port(PORT_NUMBER));
wireMockServer.start();
configureFor("127.0.0.1", wireMockServer.port());
stubFor(get(urlEqualTo(url))
.willReturn(aResponse()
.withStatus(HTTPOK)
.withHeader("Content-Type", "application/json")
.withBody(response)));
myService.callService();
}
我总是得到
java.util.concurrent.CompletionException: javax.ws.rs.ProcessingException: org.apache.http.conn.HttpHostConnectException: Connect to 127.0.0.1:9090 [/127.0.0.1] failed: Connection refused
我知道这不可能是 port
、url
或 headers 定义错误的问题。我这么说是因为当我 运行 一个具有完全相同的 WireMock 配置(没有服务调用)的 java 实例,然后进行测试时,它 运行 很顺利,服务 returns 事实上我已经嘲笑过。似乎 WireMockServer 生命周期必须驻留在我想要的进程之外的进程中。
怎么回事?
提前致谢;)
看来问题是由两个原因造成的:
1 - 我实际上并没有初始化 wireMockServer(初始化是在一个 BeforeAll 方法中进行的,实际上并没有被调用),对此感到抱歉。
2 - stubFor
必须用于 wireMockServer 实例。
以下是工作配置:
WireMockServer server = new WireMockServer(options().bindAddress("127.0.0.1").port(port));
server.stubFor(get(urlEqualTo(urlWithId))
.willReturn(aResponse()
.withStatus(HTTPOK)
.withHeader("Content-Type", "application/json")
.withBody(response)));
server.start()
myService.callService();
希望有人觉得这有用。