如何使用JAVA模拟GET HTTP请求

时间:2018-10-17 12:47:33

标签: java rest mockito

如何使用JAVA模拟GET http请求? 我有这种方法:

public HTTPResult get(String url) throws Exception{
        try {
            ResponseEntity<String> response = restTemplate.getForEntity(url, String.class);
            return new HTTPResult(response.getBody(), response.getStatusCode().value());
        }
        catch (ResourceAccessException e) {
            String responseBody = e.getCause().getMessage();
            JSONObject obj = new JSONObject(responseBody);
            return new HTTPResult(obj.getString("responseBody"), Integer.parseInt(obj.getString("statusCode")));
        }
    }

我如何验证自己正在获取:responseBody-一些json和statusCode例如200?

1 个答案:

答案 0 :(得分:1)

如果要“真正的”单元测试,则必须考虑使用诸如EasyMock或Mockito之类的模拟框架(我建议使用后者)。可能 使得有必要重新制作您的生产代码,因为对new()的调用经常使这些框架出现问题(还有其他更好的框架:JMockit或PowerMockito,但又一次:如果可能的话,请使用Mockito)。

如果您要进行更多的“端到端”测试:有针对Jersey的测试框架(例如,参见here)。意思是:实际上,您几乎可以完全对REST端点进行“单元测试”,而无需运行真实的服务器。