Spring mockMvc在使用ExceptionHandler时抛出错误

时间:2017-06-30 08:11:23

标签: spring-mvc testing spring-boot spring-test-mvc

我正在使用SpringMockMvc,在我的控制器中我有@ExceptionHandler。在致电post请求时,我收到以下错误。

Failed to invoke @ExceptionHandler method: public org.springframework.http.ResponseEntity<com.xx.xxx> com.xx.xx.handleException(java.lang.Throwable,org.eclipse.jetty.server.Request)
java.lang.IllegalStateException: Current request is not of type [org.eclipse.jetty.server.Request]: org.springframework.mock.web.MockHttpServletRequest@47fac1bd
        at org.springframework.web.servlet.mvc.method.annotation.ServletRequestMethodArgumentResolver.resolveArgument(ServletRequestMethodArgumentResolver.java:97)

如果请求的类型为@ExceptionHandler

,我不确定为什么org.springframework.mock.web.MockHttpServletRequest无法处理

1 个答案:

答案 0 :(得分:1)

这可能永远不会有效,只是因为org.springframework.mock.web.MockHttpServletRequest不是org.eclipse.jetty.server.Request的子类型。因此,Spring不可能为MockHttpServletRequest类型的参数提供org.eclipse.jetty.server.Request的实例。

您需要将handleException()方法中第二个参数的类型更改为javax.servlet.http.HttpServletRequest