如何在Spring Controller Advice上进行集成测试

时间:2016-07-07 10:22:42

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

标题100%解释了我的问题。假设Spring Boot / MVC中有@ControllerAdvice注释类。在我的例子中,它包含@ExceptionHandler注释。好的,我可以对这个类进行单元测试(它返回带有Exception类信息的格式化JSON)。这很容易 - 特别是在使用Spock时。

但是集成测试呢?测试我对Spring库的使用是否正确的唯一方法是创建仅用于测试目的的控制器,添加一些方法,例如。抛出特定类型的异常,看看它是否返回我设计的@ControllerAdvice返回的内容。但它似乎很难看 - 只为测试现有代码创建了额外的代码。

所以我的问题是 - 你如何对@ControllerAdvice进行集成测试?你只是不这样做,只创建特殊的控制器来测试@ControllerAdvice或者只是使用现有的控制器测试它,例如提供错误的数据会导致抛出异常(在我的情况下,如果它是{{ 1}}方法我们将检查@InitBinder)?

1 个答案:

答案 0 :(得分:0)

对于Spring Framework中的集成测试,测试应该执行以下操作:

  • 实例化应用程序上下文。在您的情况下,应用程序上下文必须包含控制器和控制器建议
  • 在控制器定义的HTTP端点上发出请求
  • 断言结果

您可以在此处找到有关Spring中集成测试的更多详细信息:http://docs.spring.io/spring/docs/current/spring-framework-reference/html/integration-testing.html#spring-mvc-test-framework