模拟服务器网络测试不起作用

时间:2019-09-05 07:39:09

标签: java spring-boot unit-testing mockserver

我正在尝试使用模拟服务器开始简单的测试。我使用依赖项:

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)。我的带模拟服务器网络的代码有什么问题?

0 个答案:

没有答案