Как смоделировать метод enum из другого класса в junit? - PullRequest
0 голосов
/ 20 мая 2019

У меня есть enum-класс HeatMapStrategy, в котором есть функция execute. Эта функция вызывается из другого класса HeatMapService. Когда я запускаю код ниже junit, он не создает макет класса HeatMapStrategy и не может смоделировать метод execute (). из класса HeatMapStrategy.

@ Test public void fetchHeatMapDataOnSuccess () создает исключение {

    when(HeatMapStrategy.valueOf(request.getHeatMapStrategy().toUpperCase()).execute(request)).thenReturn(response);
HeatMapResponse testResponse = service.fetchHeatMapData(request);
        assertEquals(response.getJsonTree().get(0).getItem1(), testResponse.getJsonTree().get(0).getItem1());
        assertEquals(response.getJsonTree().get(0).getItem2(), testResponse.getJsonTree().get(0).getItem2());
        assertEquals(response.getJsonTree().get(0).getQ_measure(),
                testResponse.getJsonTree().get(0).getQ_measure());

    } catch (Exception e) {
        e.printStackTrace();
    }

}

публичное перечисление HeatMapStrategy {

Q_MEASURE("Q_MEASURE") {

    @Override
    public HeatMapResponse execute(RollUpListRequest request) throws IOException,
            InterruptedException, HeatMapException, ClassNotFoundException {
          Long   subCapId =null;
        String jobType=request.getJobType();
        if(jobType.equalsIgnoreCase(HeatMapConstants.CDT)) {
             subCapId =
                Long.valueOf(oracleDao.getSubstitutionCapId(Long.toString(request.getEasId()),
                        Long.toString(request.getIcdtId())));
        }
        else if(jobType.equalsIgnoreCase(HeatMapConstants.CBT)){
        subCapId= Long.valueOf(mariaDao.getSubstitutionCapId(Long.toString(request.getEasId()),
                Long.toString(request.getIcdtId())));
        }
        LOG.info("capId '{}'", subCapId);

        String query = String.format(qMerticQuery, request.getAssortId(), subCapId,
                request.getRollupList(), request.getRollupList());

        LOG.info("Query to be run '{}' ", query);

        return thriftDao.fetchHiveTables(query);



    }

открытый класс HeatMapService {

public HeatMapResponse fetchHeatMapData(RollUpListRequest request) throws IOException,
        InterruptedException, HeatMapException, ClassNotFoundException {

    HeatMapResponse response = null;
    try {
        response = HeatMapStrategy.valueOf(request.getHeatMapStrategy().toUpperCase())
                .execute(request);
    } catch (HeatMapException ex) {
        LOG.error(HeatMapConstants.HEATMAP_ERROR, ex.getMessage());
        response=HeatMapResponse.builder().error_message(ex.getMessage()).build();
    }
    return response;
}

}

Я ожидаю, когда я вызываю HeatMapStrategy.valueOf (request.getHeatMapStrategy (). ToUpperCase ()). Execute (request) он должен вернуть ложный ответ, который я дал.

...