在 JUnit5 中 MockMVC.perform 期间预期异常

Expecting exception during MockMVC.perform in JUnit5

这可能是一个重复的问题。但是我浏览了大约 10-15 个相关帖子和相关回复,但都没有解决我的问题。我面临的问题如下 我有一个带有自定义 ApplicationException 的 SpringRest 控制器 class。 我已经为我的控制器编写了一个 Junit,下面是我遇到问题的代码片段。

this.mockMvc.perform(MockMvcRequestBuilders.post(url)
        .contentType(MediaType.APPLICATION_JSON)
        .content(new ObjctMapper().writeValueAsString(requestObject)
        .headers(header)
        .accept(MediaType.APPLICATION_JSON)
    )
    .andDo(print())
    .andExpect(status().is4xxClientError());

当我执行测试方法时,我看到代码抛出了 ApplicationException,但是 Junit 失败了,我在 Junit 控制台中看到的是

"org.springframework.web.util.NestedServletException: Request processing failed; nested exception is com.abc.pmr.case.exception.ApplicationException at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:1014)
    at org.springframework.web.servlet.FrameworkServlet.doPost(FrameworkServlet.java:909)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:652)
...
...
Caused by: com.abc.pmr.case.exception.ApplicationException
    at com.abc.pmr.case.exception.ApplicationException

我也尝试过 .andExpect(mvcresult -> assertTrue(mvcresult.getResolvedException() instanceof ApplicationException));。 但这也无济于事。

Junit 因上述异常而失败,而我想将预期的异常作为 ApplicationException 传递给 Junit。 注意:此 class 中的所有成功场景测试用例均已成功通过。

如有任何帮助,我们将不胜感激。

我想您的 mockMvc 设置不完全适合您的情况。 确保您已将异常处理程序设置为您的 mockMvc。 您可以找到有关此 here.

的更多信息

因此,当您的环境配置正确时,您将能够测试此逻辑。