Unitest Create (Post) метод с использованием mockito - PullRequest
0 голосов
/ 18 мая 2018

Учитывая класс SchedulerResource, который имеет следующий метод createSchedules и набор констант, используемых в методе, как я могу использовать mockito для написания модульного теста для метода createSchedules?

@PostMapping
public ResponseEntity<CustomResponse> createScheduler(@Valid @RequestBody SchedulerDTO schedulerDTO) {
    if(schedulerDTO != null)
    {
      schedulerService.saveScheduler(schedulerDTO);
      customResponse.setMessage("Schedule has been created!");
      return new ResponseEntity<>(customResponse ,HttpStatus.OK);
    } else {
      customResponse.setMessage("Not Create!");
      return new ResponseEntity<>(customResponse,HttpStatus.NOT_FOUND); 
    }
}

Тестовый класс:

@Test
public void createScheduler_Success() throws Exception {
    SchedulerDTO scheduler = new SchedulerDTO();
    Long sId = new Long(2);
    scheduler.setSchedulerId(sId);
    scheduler.setLinearChannelId((long)1);
    scheduler.setDurationMs((long) 5000);
    scheduler.setStatus(StatusEnum.NEW);
    scheduler.setStartTime("2018-03-01T05:55:25");
    scheduler.setEndTime("2018-03-01T05:57:25");
when(schedulerService.saveScheduler(scheduler)).thenReturn(scheduler);

    mockMvc.perform(post("/linear/api/1.0/schedules")
            .contentType(MediaType.APPLICATION_JSON)
            .content(asJsonString(scheduler)))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$.message", is("Schedule has been created!")));        
}

Так что все в порядке с:

if(schedulerDTO != null)
{
  schedulerService.saveScheduler(schedulerDTO);
  customResponse.setMessage("Schedule has been created!");
  return new ResponseEntity<>(customResponse ,HttpStatus.OK);
}

Но как насчет:

else{
  customResponse.setMessage("Not Create!");
  return new ResponseEntity<>(customResponse,HttpStatus.NOT_FOUND);   
}

Итак, - как я могу написатьдля случая, когда schedulerDTO == null?

1 Ответ

0 голосов
/ 18 мая 2018

Простой: вы передаете ноль, а затем записываете различные спецификации для вашего mockMvc объекта, например andExpect(status().isNotFound() (или что-то похожее).

Помимо этого,Вы можете использовать методы, такие как verifyZeroInteractions () , чтобы гарантировать, что никакие вызовы не поступали, например, к этому поддельному объекту службы.

В этом смысле это на самом деле мало чем отличается от тестирования другого случая: вы отступаете назад и смотрите на все, что происходит в ветке else, а затем вы думаете о способах наблюдения /проверить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...