Grails集成测试中的依赖注入

Luc*_*cas 6 grails integration-testing

我正在测试我的应用程序的服务,它依赖于运行时的其他服务.在测试时,依赖注入似乎不起作用.在运行集成测试时,依赖注入是否适用于Grails伪像?

Dav*_*wer 8

是的,在运行测试时(即集成目录中的那些测试),应用程序启动并创建并注入所有bean,就像应用程序实际运行一样.测试应用程序和正在运行的应用程序之间的唯一区别应该是配置环境.

当然,如果您在测试中使用"new"运算符实例化需要注入的类,则无法获得DI的好处.相反,在测试用例中为您的测试创建一个属性,它将被注入:

class MyServiceTests extends GrailsUnitTestCase {

    MyService service

    void testInjection() {
        assertNotNull service
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 只是旁注.集成测试不应扩展GrailsUnitTestCase,具体取决于版本,这可能会导致ConfigurationHolder.config的严重问题为null.是grails create-integration-test在许多版本中确实创建了一个扩展GrailsUnitTestCase的测试,但这是最近修复过的bug. (2认同)