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

时间:2015-10-19 20:30:40

标签: grails integration-testing grails-3.0

我正在将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使用功能测试来进行控制器的集成测试,但是这个解决方案对我来说并不起作用,我并不痒将所有这些测试实现为功能,或者手动注入依赖项控制器实例,我该如何解决?

4 个答案:

答案 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