Saltar al contenido

cómo tratar la excepción del controlador con mockmvc

Solución:

¿Intentó utilizar un ExceptionHandler personalizado como aquí? : https://spring.io/blog/2013/11/01/exception-handling-in-spring-mvc

Si lo hace, puede devolver códigos de respuesta HTTP personalizados y verificarlos en su prueba.

La forma más fácil es inyectar @ExceptionHandler en su contexto de prueba de primavera o arroja una excepción directamente en MockMvc.perform() justo antes .andExpect().

@ContextConfiguration(classes = { My_ExceptionHandler_AreHere.class })
@AutoConfigureMockMvc
public class Test {
    @Autowired
    private MockMvc mvc;

    @Test
    public void test() {
        RequestBuilder requestBuilder = MockMvcRequestBuilders.post("/update")
                .param("branchId", "13000")
                .param("triggerId", "1");
        MvcResult mvcResult = mvc.perform(requestBuilder)
                .andExpect(MockMvcResultMatchers.status().is4xxClientError())
                .andExpect(MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON_UTF8))
                .andExpect(__ -> Assert.assertThat(
                        __.getResolvedException(),
                        CoreMatchers.instanceOf(SecurityException.class)))
                .andReturn();
}

De esa manera MvcResult.getResolvedException() sostiene @Controller¡Excepción!

  • https://stackoverflow.com/a/62910352/173149
  • https://stackoverflow.com/a/61016827/173149
  • Prueba del método Spring MVC @ExceptionHandler con Spring MVC Test
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *