编写Vert.x异步方法的测试用例

问题描述

我想使用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 (将#修改为@)