0

当我们的代码库还在 Grails 2.1.4 中时,我们的拦截器的这个单元测试可以完全覆盖:

@Before
void setUp() {
   gmc = new GMockController()
   apiProducts = gmc.mock()

   api.products.returns(apiProducts).stub()

   controller.api = api
}

void testBeforeInterceptor() {
   // Arrange
   setUp()
   def ctrl = gmc.mock(controller)
   params.id = 1
   ctrl.actionName.returns('view')
   apiProducts.get(params.id)

   // Act
   gmc.play {
       controller.beforeInterceptor()
   }
}

切换到 Grails 2.2.2 后,这似乎不像以前在 2.1.4 中那样涵盖测试。错误“意外的方法调用”被调出,因为它不会像在 2.1.4 中那样通过拦截器。

拦截器的测试方式是否发生了变化?

我四处寻找,似乎没有人对此有答案。关于测试拦截器的文档很少。有任何想法吗?

4

1 回答 1

0

在集成测试期间调用操作时,Grails 不会调用拦截器或 servlet 过滤器。您应该单独测试拦截器和过滤器,必要时使用功能测试。

(未经测试)我不确定这是否适用于 GMock。但是集成测试文档另有说明。

于 2013-06-26T03:11:18.943 回答