Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing Grails 2.2.2:使用GMock在ControllerTests中测试拦截器_Unit Testing_Grails_Groovy_Controllers_Gmock - Fatal编程技术网

Unit testing Grails 2.2.2:使用GMock在ControllerTests中测试拦截器

Unit testing Grails 2.2.2:使用GMock在ControllerTests中测试拦截器,unit-testing,grails,groovy,controllers,gmock,Unit Testing,Grails,Groovy,Controllers,Gmock,当我们的代码库仍在Grails 2.1.4中时,这个针对拦截器的单元测试在全覆盖范围内工作: @Before void setUp() { gmc = new GMockController() apiProducts = gmc.mock() api.products.returns(apiProducts).stub() controller.api = api } void testBeforeInterceptor() { // Arrange

当我们的代码库仍在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()
   }
}
在切换到Grails2.2.2之后,这似乎不像2.1.4中那样涵盖了测试。正在调用错误“意外方法调用”,因为它不会像2.1.4中那样通过拦截器

拦截器的测试方式有变化吗

我到处寻找,似乎没有人知道答案。关于测试拦截器的文档很少。有什么想法吗

Grails在调用时不调用拦截器或servlet过滤器 集成测试期间的操作。您应该测试拦截器和 隔离过滤器,必要时进行功能测试


(未经测试)我不确定这是否适用于GMock。但doc提到了其他方面。

我也研究过,但谢谢你提出:)