我正处于编程的起步阶段,我想问一下如何用Mockito模拟对象,更具体地说,是Uniest响应。假设我有一个数据库,我不想每次测试时都打扰它,我想用Mockito来做这件事,但问题是我不知道如何创建假的“httpResponse”对象,它会返回。为了提供一些上下文,我附上了我的代码:
/**
* This method lists the ID of the activity when requested.
*
* @return the list of all activities
*/
public JSONArray getActivites() {
HttpResponse<JsonNode> jsonResponse = null;
try {
jsonResponse = Unirest
.get("http://111.111.111.111:8080/activity")
.header("accept", "application/json")
.asJson();
} catch (UnirestException e) {
System.out.println("Server is unreachable");
}
JSONArray listOfActivities = jsonResponse.getBody().getArray();
return listOfActivities;
}
所以我想的是模拟Uniest,然后当调用.get方法时,我会返回一个假的HttpResponse,问题是,我不知道如何做,我在网上看过,不能真正理解它。有没有可能用实际的数据库做一次,然后“提取”信息,每次都用它来测试?
5条答案
按热度按时间hk8txs481#
PowerMockRunner、PowerMockito和Mockito的范例程式码片段
z6psavjg2#
您可以将调用 Package 在一个 Package 类中,而不是直接调用一个静态成员,该 Package 类可以基于某些参数提供一个HttpResponse。这是一个很容易在Mockito中被模仿的接口。
或者你可以用力量模拟...
n53p2ov03#
同时,原始作者提供了unirest-mocks的模拟支持:
玛文:
用法:
7dl7o3gd4#
你可以用
Mockito.mock(HttpResponse.class)
来模拟HttpResponse
,并在获取这个响应的主体时放入,以获取你的json。例如:这个'readFileContent'只是一个方法,用来读取一个文件,我把我的响应放在这个文件中。你可以把你的json放在那里进行比较
wxclj1h55#
我使用JUnit5和Mockito解决了类似的任务。待测类:
并测试: