单元测试弹簧控制器中的响应状态代码

Raj*_*uri 4 spring spring-mvc

我试图在控制器中对以下方法进行单元测试

  @ExceptionHandler(ExceptionName.class)
  @ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
  public String handleIOException(ExceptionName ex, HttpServletRequest request) {
    return "errors.messagepage";
  }
Run Code Online (Sandbox Code Playgroud)

我可以测试返回的视图名称.

我还想测试响应状态代码.我怎样才能做到这一点?

ska*_*man 5

你不能,不能作为一个单元测试.注释是对框架的指令,不是可执行代码的一部分.

测试这个问题的唯一方法是引导a DispatcherServlet作为测试的一部分(实际上是集成测试),或部署应用程序并通过HTTP测试它.

如果您真的想在单元测试中执行此操作,请考虑HttpServletResponse手动设置响应代码,而不是使用注释:

@ExceptionHandler(ExceptionName.class)
public String handleIOException(ExceptionName ex, HttpServletRequest request, HttpServletResponse response) {
  response.setStatus(500)
  return "errors.messagepage";
}
Run Code Online (Sandbox Code Playgroud)