问题描述
我想使用Mockito为此下面的方法编写Junit测试用例。 我根本无法涵盖异步调用,我尝试模拟处理程序,但仍然无法正常工作。
我正在嘲笑此(handler.succeeded() && handler.result() != null
)来从此条件检查中获取真实信息,但没有得到覆盖。
@Override
public Future<List<StationModel>> getAll(StationModel request) {
HttpRequest<Buffer> webClient = null;
String stationID = request.getStationID();
String type = request.getType();
String days = request.getId();
Future<List<StationModel>> result = Future.future();
if (stationID != null && type != null && days != null) {
webClient = vertxWebClient.getClient().get(port,host,"/dataservice/data-record/" + stationID + "/" + type + "/" + days);
} else if (stationID != null && days != null) {
webClient = vertxWebClient.getClient().get(port,"/dataservice/data-record/" + stationID + "/" + days);
}
if (webClient != null) {
MultiMap headers = webClient.headers();
headers.set("content-type","application/json");
headers.set("X-Service-Url",request.getHttpRequest().getHeader("X-Service-Url"));
headers.set("X-Service-User",request.getHttpRequest().getHeader("X-Service-User"));
String serviceTicket = request.getHttpRequest().getHeader("X-Service-Ticket");
String accesstoken = request.getHttpRequest().getHeader("X-Service-Accesstoken");
if (serviceTicket != null) {
headers.set("X-Service-Ticket",serviceTicket);
}
if (accesstoken != null) {
headers.set("X-Service-Accesstoken",accesstoken);
}
webClient.send(handler -> {
if (handler.succeeded() && handler.result() != null) {
JsonObject response = handler.result().bodyAsJsonObject();
JsonArray array = (JsonArray) response.getValue("data");
LOGGER.debug("Response array{}",array);
@SuppressWarnings({ "rawtypes","unchecked" })
List<StationModel> list = (List) new ArrayList<BaseEntity>(
basicRepository.toModelList(new StationModel(),array));
LOGGER.debug("API Response List{}",list);
result.complete(list);
} else {
LOGGER.error("API Error {}",handler.cause().getMessage());
result.fail(handler.cause());
}
});
} else {
LOGGER.debug("Invalid URL");
}
return result;
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)