У меня в приложении есть два ControllerAdvice, я должен объединить их в один. Но мне нужно проверить их до и после слияния, протестировать исключение и объект, который мне возвращает контроллер.
Я пытаюсь сделать jUnit-тест с Mockito, но кажется, что невозможно протестировать исключения без любой контекст, без контроллера и т. д. c ...
Кто-нибудь знает, как я могу добиться того, что я пытаюсь сделать?
Я также пытаюсь бросить вручную исключение, но, очевидно, оно не было перехвачено ControllerAdvice.
Итак, в основном вот что я пытаюсь сделать: вывести исключение вручную Это исключение обрабатывается моим ControllerAdvice. Проверьте возвращенный объект (код и сообщение).
Вот пример кода, который у меня есть:
@Before
public void setup() {
...
mockMvc = MockMvcBuilders.standaloneSetup(getController())
.setControllerAdvice(new GlobalControllerExceptionHandler())
.setCustomArgumentResolvers(resolver, resolver_0, resolver_1)
.setHandlerExceptionResolvers(exceptionResolver).build();
}
@Controller
@RequestMapping("/tests")
public static class RestProcessingExceptionThrowingController {
@RequestMapping(value = "/exception", method = GET)
public @ResponseBody String find() {
throw new EntityNotFoundException();
}
}
@Test
public void testHandleException() throws Exception {
mockMvc.perform(get("/tests/exception"))
.andExpect(new ResultMatcher() {
@Override
public void match(MvcResult result) throws Exception {
result.getResponse().getContentAsString().contains("global_error_test");
}
})
.andExpect(status().isNotFound());
}
У меня есть хороший код состояния в конце, но он не использует мой ControllerAdvice
(я пытаюсь с отладчиком)