Обработчик исключений для рекомендаций контроллера тестирования - PullRequest
0 голосов
/ 10 июля 2020

Как я могу протестировать ControllerAdvice с помощью Mockito / MVC? Я добился успеха при вызове HTTP-запросов! Однако, когда я создаю тест (код ниже), он не работает:

@ControllerAdvice

publi c class HandlerGenericHttpRequest {

private final String messageResourceNotFound = "URL not found for current request";

@ExceptionHandler({HandlerExceptionNotFound.class})
@ResponseStatus(value = HttpStatus.NOT_FOUND)
public @ResponseBody HandlerGenericHttpResponse handleResourceNotFound(final HandlerExceptionNotFound exception,
                                                                       final HttpServletRequest request) {
    return exceptionResponseHandler(request.getRequestURI(),
                                    exception.getMessage());
}

@ExceptionHandler(NoHandlerFoundException.class)
@ResponseStatus(HttpStatus.NOT_FOUND)
public @ResponseBody HandlerGenericHttpResponse handleNoHandlerFound(final NoHandlerFoundException exception,
                                                                     final HttpServletRequest request) {
    return exceptionResponseHandler(request.getRequestURI(),
                                    messageResourceNotFound);
}

// ommited for brevied

Теперь мой тест не работает:

@Before
public void init() {
    mockMvc = MockMvcBuilders.standaloneSetup(getAddressEntryPoint)
                             .setControllerAdvice(new HandlerGenericHttpRequest())
                             .build();
}

@Test
public void handleResourceNotFound__Error__404() throws Exception  {
    MockHttpServletResponse response = mockMvc.perform(
            get("/address-invalid/zipcode/".concat(zipCodeInvalid))
                    .accept(MediaType.APPLICATION_JSON)) 
            .andReturn().getResponse();
    assertThat(response.getStatus()).isEqualTo(HttpStatus.NOT_FOUND.value());
    assertThat(response.getContentAsString()).isEmpty();

}

Тест пройден успешно, но не охватывает никаких @ ExceptionHandler.

...