2015-10-19 98 views
0

我正在将2.4.3的grails应用程序升级到3.0.8。 有很多集成测试正在使用grails.util.GrailsWebUtil.bindMockWebRequest(grailsApplication.mainContext)以下调用controller.method。但我发现grails.util.GrailsWebUtil不再包含bindMockWebRequest方法,好像它已被替换为grails.util.GrailsWebMockUtil,好吧,但是在控制器中声明的所有服务都是没有被注入类。我可以使用grails.test.spock.IntegrationSpec,但该类也已从grails3中删除。有一个suggestion使用功能测试来进行控制器的集成测试,但是这个解决方案对我来说不起作用,我并不是很想将所有这些测试作为功能实现,或者手动将依赖项注入到控制器实例中,我该如何解决它?控制器集成测试grails3:服务没有注入

+0

'ConfigurableApplicationContext ctx =(ConfigurableApplicationContext)grailsApplication.getMainContext(); 。 ctx.getBeanFactory()autowireBeanProperties(控制器, AutowireCapableBeanFactory.AUTOWIRE_BY_NAME,FALSE);' - 可能是一个解决方案 – airfox

+0

下面是如何编写集成测试与Grails的控制器3 http://nimavat.me/blog一个完整的例子/ grails3控制器集成 - 测试 - 例如 –

回答

0

使用grails.test.mixin.integration.Integration注释而不是grails.test.spock.IntegrationSpec类扩展名。

并将集成测试移至src/integration-test/groovy

0

我从Grails 2.5.1升级到3.2.4。我的一个集成测试找不到使用def xxxService注入的服务。我将服务包含在@Mock列表中。 XxxServiceIntegrationSpec扩展了规范。

我知道这不太相关测试控制器,但也许它有帮助吗?

0

我们在旧的grails 2.x应用程序中使用了控制器集成的dozones。当我们迁移到grails 3时,我们想保留它,不能抛出它们并从头开始编写功能测试。

在这里,我在博客它Integration testing controllers with Grails 3

的基本步骤是 - 设置模拟请求和响应 - 设定电流控制器名称 - 其余模拟请求并在测试

见的端部响应以上博客文章为一个完整的例子。

希望它有帮助。