【发布时间】:2015-04-01 08:45:52
【问题描述】:
我想对抛出异常的控制器方法进行测试。方法是这样的:
@RequestMapping("/do")
public ResponseEntity doIt(@RequestBody Request request) throws Exception {
throw new NullPointerException();
}
当我尝试使用以下代码部分测试此方法时,
mockMvc.perform(post("/do")
.contentType(MediaType.APPLICATION_JSON)
.content(JSON.toJson(request)))
NestedServletException 从 Spring 库中抛出。如何测试抛出 NullPointerException 而不是 NestedServletException?
【问题讨论】:
-
您正在执行 POST 并且控制器方法匹配 GET。当您将其更改为 GET 时,您将获得 NPE。
-
@NikolaB 空方法表示所有HTTP方法都映射到
doIt。 docs.spring.io/spring/docs/current/spring-framework-reference/… -
我的错误尝试捕获 NestedServletException 并调用 getRootCause() 方法并查看返回的内容。
-
原始异常由getRootCause()返回。但是不知道是不是有一些配置Spring抛出了原来的异常。
-
不太清楚你的意思,但尝试使用 @ExceptionHandler(NullPointerException.class) 注释和参数 NullPointerException npe 以及在方法体中添加 void 方法到控制器 throw npe。
标签: java unit-testing spring-mvc