Я создаю проект весенней загрузки, в котором я использую модель mapper для преобразования моих сущностей в DTO.Все работает нормально, когда я делаю запрос GET через браузер.Ответ JSON правильный.Но, когда я пытаюсь создать тестовые случаи для того же самого, ключ JSON становится пустым со следующей ошибкой.
Причина: com.jayway.jsonpath.PathNotFoundException: Ожидается, что будет найден объект со свойством ['key'] в пути $ [0], но найдено' null '.Это не объект json в соответствии с JsonProvider: 'com.jayway.jsonpath.spi.json.JsonSmartJsonProvider'.
Мой код выглядит следующим образом::
Класс Resource / Controller-:
@SuppressWarnings(StringConstantsUtils.UNCHECKED)
@GetMapping(path = "/fleets/{fleetId}")
public ResponseEntity<List<FleetSelectDto>> getAllF(
@RequestParam(name = StringConstantsUtils.COUNTRYCODE, required = false) final String countryCode,
@RequestParam(name = StringConstantsUtils.DEALERCODE, required = false) final String dealerCd,
@PathVariable final Long fleetId,
@RequestParam(name = StringConstantsUtils.LANGUAGECODE, required = false) final String langCode)
throws NoDataFoundException {
final List<FleetSelectEntity> list = dropdownService.getAllFleets(countryCode, fleetId, dealerCd, langCode);
if (null == list || list.isEmpty()) {
throw new NoDataFoundException("Fleet Id- " + fleetId + StringConstantsUtils.NOT_FOUND);
}
final List<FleetSelectDto> fleetSelectList = (List<FleetSelectDto>) (Object) list.stream()
.map(fleetSelectEntity -> convertToDto(fleetSelectEntity)).collect(Collectors.toList());
return new ResponseEntity<>(fleetSelectList, HttpStatus.OK);
}
Сервисный код -:
@Override
public List<FleetSelectEntity> getAllFleets(final String countryCode,
final Long fleetId, final String dealerCd, final String langCode) {
log.info("Inside getAllFleets() of DropDownServiceImpl.Java");
final List<Object> parameter = new ArrayList<>();
parameter.add(CommonConstantUtils.INT_ZERO, countryCode);
parameter.add(CommonConstantUtils.INT_ONE, fleetId);
parameter.add(CommonConstantUtils.INT_TWO, dealerCd);
parameter.add(CommonConstantUtils.INT_THREE, langCode);
return dropRepo.getAllFleets(parameter);
}
Контрольный пример -:
@Test
public void test_get_allFleets_success() throws Exception {
createFleetList();
when(service.getAllFleets("US", 0L, "AB", "EN")).thenReturn(fleetList);
mockMvc.perform(get(fleetFmURL,0))
.andExpect(status().isOk())
.andExpect(content().contentType(MediaType.APPLICATION_JSON_UTF8_VALUE))
.andExpect(jsonPath("$", hasSize(3))).andExpect(jsonPath("$.0.key", is(243)))
.andExpect(jsonPath("$.0.label", is("FleetA")));
verify(service, times(1)).getAllFleets("US", 0L, "AB", "EN");
verifyNoMoreInteractions(service);
}