У меня есть 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)
он должен вернуть ложный ответ, который я дал.