我正在使用wiremock来模拟集成测试中的外部操作员响应:
@ClassRule
public static WireMockClassRule zainWireMockStatic = new WireMockClassRule(9900);
并得到这个例外
requesting to java.net.SocketTimeoutException: connect timed out timed out
这是我的电线
private static void wireMockZainUnSubscriptionRequest() {
zainWireMockStatic.stubFor(get(urlPathMatching("/api/unsubscribe")).willReturn(
aResponse().withStatus(200).withHeader("Content-Type", "application/json")
.withBody(FileUtils.readFileFromClasspath(
"data/mocks/zain_unsubscribe_success_response.json"))));
}
这是我的考验
@Test
public void unsubscribeUserWithSuccessResponse() {
wireMockZainUnSubscriptionRequest();
given().body(FileUtils.readFileFromClasspath("data/message/unsubscribe_request.json"))
.contentType(ContentType.JSON).post(UNSUBSCRIBE_API).then().statusCode(200)
.body("user_id", equalTo(USER_ID));
}
问题是Spring Boot运行器每个类启动和停止一次servlet容器。如果您使用WireMock规则,则每个测试方法启动和停止一次。这意味着Spring应用程序中的池连接在测试用例之间变得无效。
您有三种方法可以解决此问题: