Как я могу протестировать 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.