Тестовый метод Junit, вызывающий реальный метод обслуживания - PullRequest
0 голосов
/ 13 февраля 2020

Контроллер

  @PostMapping("/event/confirmation")
  public Mono<CallbackResponse> eventConfirmation(@RequestParam("eventId") String eventId,
      @RequestBody ExecutionSummary execSummary, @RequestHeader("customerCode") String customerCode)
      throws ResourceNotFoundException {
    return eventService
        .updateEvent(eventId, execSummary, serviceAuthClient.getDefaultJwtTokenObserver().getJwtAccessToken())
        .flatMap(event -> {
          return Mono.just(new CallbackResponse(true));
        });
  }

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

  @RunWith(SpringRunner.class)
  @WebAppConfiguration
  @AutoConfigureMockMvc
  @SpringBootTest(properties = "spring.main.banner-mode=off")
  public class EventStreamControllerTest {

      @Mock
      private ServiceAuthClient serviceAuthClient;
      @Mock
      private EventService eventService;

      @InjectMocks
      private EventStreamController eventStreamController;

      @Before
      public void setUp() {
      Mockito.reset(eventService);
          mvc = MockMvcBuilders.standaloneSetup(eventStreamController)
            .setControllerAdvice(new ControllerExceptionHandler()).build();
      }

      @Test
      public void testEventConformation() throws Exception {

          ExecutionSummary executionSummary = new ExecutionSummary();
          executionSummary.setErrorMessage("Test");

          Mono<Event> event = Mono.just(new Event());
          Mockito.when(eventService.updateEvent(Mockito.anyString(), 
                  Mockito.any(), Mockito.anyString()))
                  .thenReturn(event);

          RequestBuilder requestBuilder = 
                          MockMvcRequestBuilders.post("/event/confirmation")
           .contentType(MediaType.APPLICATION_JSON).header("customerCode", "456")
           .param("eventId", "123")
           .content(objectMapper.writeValueAsString(executionSummary));

        MvcResult result = mvc.perform(requestBuilder).andReturn();
        assertEquals(HttpStatus.OK.value(),result.getResponse().getStatus());

  }
}

Когда я запускаю тест, он фактически вызывает оригинальный сервис, который не использует макет служба. Может кто-нибудь помочь мне, как написать тест для вышеупомянутого метода контроллера.

Когда я печатаю вызовы фиктивного сервиса, он печатает ниже вывода.

  [Mockito] Unused stubbings of: eventService
  1. eventService.updateEvent("", null, "");
  - stubbed -> at com.endpoint.rest.controller.EventStreamControllerTest.testEventConformation(EventStreamControllerTest.java:158)

1 Ответ

0 голосов
/ 13 февраля 2020

В вашем тестовом классе вы должны определить eventService как MockBean. Тогда это будет фиктивный сервис.

@MockBean
private EventService eventService;
...