我正在尝试编写程序的单元测试,并使用模拟数据。我有点困惑如何截取HTTP GET请求到URL。
我的程序调用URL访问API并返回简单的XML文件。我想要的测试结果是从我这里接收一个预定的XML文件,而不是在线获取API的XML文件,以便我可以将输出与预期输出进行比较,并确定一切是否正常工作。
有人向我指出了Mockito,并给出了很多不同的示例,例如stackoverflow上的这篇文章:如何使用Mockito测试REST服务?,但我仍不清楚如何设置所有内容以及如何模拟数据(即每当调用URL时返回我的xml文件)。
我唯一能想到的办法是创建另一个在Tomcat本地运行的程序,并在我的测试中传递一个特殊的URL,该URL会调用Tomcat上本地运行的程序,然后返回我要测试的xml文件。但那似乎太麻烦了,而且我认为那样做是不可接受的。请问有谁能指点我方向吗?
private static InputStream getContent(String uri) {
HttpURLConnection connection = null;
try {
URL url = new URL(uri);
connection = (HttpURLConnection) url.openConnection();
connection.setRequestMethod("GET");
connection.setRequestProperty("Accept", "application/xml");
return connection.getInputStream();
} catch (MalformedURLException e) {
LOGGER.error("internal error", e);
} catch (IOException e) {
LOGGER.error("internal error", e);
} finally {
if (connection != null) {
connection.disconnect();
}
}
return null;
}
如果这有助于您,我正在使用Spring Boot和Spring Framework的其他部分。