FrV*_*ura 2 java testng cucumber 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();
}
Run Code Online (Sandbox Code Playgroud)
我总是得到
java.util.concurrent.CompletionException:javax.ws.rs.ProcessingException:org.apache.http.conn.HttpHostConnectException:连接到127.0.0.1:9090 [/127.0.0.1]失败:连接被拒绝
我知道这不可能是错误定义的问题port,url或标题。我这样说是因为当我使用完全相同的 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();
Run Code Online (Sandbox Code Playgroud)
希望有人觉得这很有用。
| 归档时间: |
|
| 查看次数: |
7761 次 |
| 最近记录: |