我正在将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中删除。有一个suggestion使用功能测试来进行控制器的集成测试,但是这个解决方案对我来说并不起作用,我并不痒将所有这些测试实现为功能,或者手动注入依赖项控制器实例,我该如何解决?
答案 0 :(得分:0)
使用grails.test.mixin.integration.Integration
注释而不是grails.test.spock.IntegrationSpec
类扩展。
将集成测试移至src/integration-test/groovy
。
答案 1 :(得分:0)
我从Grails 2.5.1升级到3.2.4。我的一个集成测试找不到我用def xxxService注入的服务。我将服务包含在@Mock列表中。 XxxServiceIntegrationSpec扩展了规范。
我知道这与测试控制器并不完全相关,但它可能有帮助吗?
答案 2 :(得分:0)
我们在旧的grails 2.x应用程序中使用了控制器集成功能。当我们迁移到grails 3时,我们想保留它,不能抛出它们并从头开始编写功能测试。
我在这里写了一篇关于它的博客Integration testing controllers with Grails 3
基本步骤是 - 设置模拟请求和响应 - 设置当前控制器名称 - 在测试结束时休息模拟请求和响应
有关完整示例,请参阅上面的博文。
希望它有所帮助。
答案 3 :(得分:0)
对于仍在寻找解决方案的任何人(我有同样的问题),我发现此示例非常有用: https://github.com/albertodeavila/testingGrails3