如何模拟HTTP响应

时间:2017-05-10 18:30:09

标签: java unit-testing junit mockito

我是Java Unit测试的新手。我面临的问题是,我需要开发一个Junit测试,将请求发送到服务器API以测试两种方法:addUser和deleteUser。如果我想从服务器添加/删除用户,我需要从服务器获取一个身份验证令牌;但是,由于服务器端的某些问题,我目前无法获得有效的令牌。所以我想到的是模拟服务器行为,如果服务器收到来自Unit测试的请求,它可以使用Jason数据进行响应,该数据指示添加/删除用户操作的状态。

因为我对Junit完全陌生。我不知道如何实现这个操作。所以我的问题是应用模拟的最简单方法是什么?

3 个答案:

答案 0 :(得分:4)

您可以在单元测试中模拟启动一个test-http-server。有几个框架可以做到这一点。例如MockserverWiremock

答案 1 :(得分:3)

您可以使用HTTP Unit Testing from Google来做到这一点。

为了生成简单的HTTP响应,您可以使用以下代码:

HttpTransport transport = new MockHttpTransport();
HttpRequest request = transport.createRequestFactory().buildGetRequest(HttpTesting.SIMPLE_GENERIC_URL);
HttpResponse response = request.execute();

您还可以通过覆盖MockHttpTransport类的实现来自定义测试。

您可以查看here的回购以获取更多详细信息。我认为它可能适合您。

答案 2 :(得分:1)

HttpResponse httpResponse = mock(HttpResponse.class);

请参阅:Mocking Apache HTTPClient using Mockito