我正在尝试使用模拟服务器开始简单的测试。我使用依赖项:
testCompile group: 'org.mock-server', name: 'mockserver-netty', version: '5.6.1'
我从guide那里获得了测试示例。我的测试非常简单:
public class MockServerTest {
private static ClientAndServer mockServer;
@BeforeClass
public static void startServer() {
mockServer = startClientAndServer(1080);
}
private void simple() {
new MockServerClient("127.0.0.1", 1080)
.when(
request()
.withMethod("GET")
.withPath("/do"),
exactly(1)
)
.respond(
response()
.withStatusCode(200)
.withHeaders(
new Header("Content-Type", "application/json; charset=utf-8"),
new Header("Cache-Control", "public, max-age=86400"),
new Header("Set-Cookie","SESSION=Njg1Mjg4NWQtZjRhOS00MDZhLWJhOGQtZmFmNWIzZjRmYTI4; Max-Age=1800; Expires=Wed, 4 Sep 2019 17:09:58 +0400; Path=/; HttpOnly; SameSite=Lax\n")
)
.withDelay(TimeUnit.SECONDS,1)
);
}
private org.apache.http.HttpResponse hitTheServerWithGetRequest(String page) {
String url = "http://127.0.0.1:1080/"+page;
HttpClient client = HttpClientBuilder.create().build();
org.apache.http.HttpResponse response=null;
HttpGet get = new HttpGet(url);
try {
response=client.execute(get);
} catch (IOException e) {
throw new RuntimeException(e);
}
return response;
}
@Test
public void simpleTest() {
simple();
HttpResponse resp = hitTheServerWithGetRequest("do");
new MockServerClient("localhost", 1080).verify(
request()
.withMethod("GET")
.withPath("/do"),
VerificationTimes.exactly(1)
);
}
@AfterClass
public static void stopServer() {
mockServer.stop();
}
}
但是此测试无效。它开始但从未结束。开始测试后,我可以向Postman发出请求,并且可以在控制台中看到日志并获得响应-找不到(但必须为带有指定标头的Ok)。我的带模拟服务器网络的代码有什么问题?