控制器集成测试grails3:没有注入服务



我正在将grails应用程序从2.4.3升级到3.0.8。有很多集成测试都是使用grails.util.GrailsWebUtil.bindMockWebRequest(grailsApplication.mainContext),然后调用controller.method。但是我发现grails.util.GrailsWebUtil不再包含bindMockWebRequest方法了,似乎它已经被grails.util.GrailsWebMockUtil取代了,好吧,但是控制器中声明的所有服务都是而不是被注入到类中。我可以使用grails.test.spock.IntegrationSpec,但这个类也已从grails3中删除。有一个建议,使用功能测试控制器的集成测试,但这个解决方案不适合我,我不痒实现所有这些测试作为功能,或手动注入依赖到控制器实例,我怎么能修复它?

使用grails.test.mixin.integration.Integration注释代替grails.test.spock.IntegrationSpec类扩展

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

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

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

我们在旧的grails 2中集成了几十个控制器。当我们迁移到grails 3时,我们想保留它,不能抛弃它们,从头开始编写功能测试。

在这里我已经写了一篇关于Grails 3的集成测试控制器的博文

基本步骤如下-设置模拟请求和响应-设置当前控制器名称- rest模拟请求和响应在测试结束

参见上面的博客文章以获得完整的示例。

希望能有所帮助。

对于那些仍然在寻找解决方案的人(我有同样的问题),我发现这个例子真的很有用:https://github.com/albertodeavila/testingGrails3

最新更新