Spring控制器中的单元测试响应状态代码
我正在尝试在控制器中对以下方法进行单元测试,
@ExceptionHandler(ExceptionName.class)
@ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
public String handleIOException(ExceptionName ex, HttpServletRequest request) {
return "errors.messagepage";
}
我可以测试返回的视图名称。
我还想测试响应状态代码。我怎样才能做到这一点?
I am trying to unit test the following method in controller
@ExceptionHandler(ExceptionName.class)
@ResponseStatus(value=HttpStatus.INTERNAL_SERVER_ERROR)
public String handleIOException(ExceptionName ex, HttpServletRequest request) {
return "errors.messagepage";
}
I can test for the returned view name.
I also want to test for the Response Status code. How can I do that?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你不能,不能作为单元测试。注释是对框架的指令,不是可执行代码的一部分。
对此进行测试的唯一方法是引导 DispatcherServlet 作为测试的一部分(实际上是集成测试),或者部署应用程序并通过 HTTP 进行测试。
如果您确实想在单元测试中执行此操作,请考虑手动在 HttpServletResponse 上设置响应代码,而不是使用注释:
You can't, not as a unit test. The annotation is an instruction to the framework, and isn't part of your executable code.
The only way to test this is to bootstrap a
DispatcherServlet
as part of your test (an integration test, really), or to deploy the application and test it over HTTP.If you really want to do this in a unit test, then consider setting the response code on the
HttpServletResponse
manually, rather than using an annotation:看看下面的博客。
Spring MVC:集成测试控制器
它详细介绍了设置JUnit 中的模拟 servlet 上下文和 WebApplicationContext。使用此设置,我可以使用控制器方法上的注释来测试响应代码集。
Take a look at following blog.
Spring MVC: Integration Testing Controllers
It details setting up a mock servlet context and WebApplicationContext from within JUnit. Using this setup I am able to test Response Code set using annotation on the controller methods.