java - 在测试内运行时,WireMock 始终返回 Connection Refused

标签 java cucumber testng wiremock

当我使用 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

我知道这不可能是错误定义的端口url或 header 的问题。我这么说是因为当我使用完全相同的 WireMock 配置(没有服务调用)运行 java 实例,然后测试时,它运行顺利,服务实际上返回了我模拟的内容。看来 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();

希望有人觉得这很有用。

关于java - 在测试内运行时,WireMock 始终返回 Connection Refused,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59039495/

相关文章:

java - 带有装饰器模式的 MVC

JavaFX TreeTableView 图像工件

java - 如何使用CURL POST多格式文件和JSON到Springboot Restful Webservice

java - 如何限制控制流不应该来到After方法中以防出现异常

java - 使用 verifyTrue(boolean) 期间出现 NullPointerException

java - 项目初始化后如何查找Spring依赖?

java - step does not have a matching glue code 错误在cucumber eclipse

java - cucumber AmbiguousStepDefinitionsException Java

eclipse - 在 Eclipse 中设置默认的 TestNG 启动配置

java - 如何在 TestNG 中发出停止测试信号?