Unit testing 在Grails单元测试中注入服务

Unit testing 在Grails单元测试中注入服务,unit-testing,grails,dependency-injection,Unit Testing,Grails,Dependency Injection,我知道您可以使用以下方法简单地在单元测试方法中注入服务: defineBeans { someService(SomeService) } 但是当我需要在服务中注入服务时(服务someService调用另一个服务some2Service)。当我使用上述代码运行测试时,我收到: Message: Cannot invoke method someMethod() on null object 是否可以在单元测试中将服务注入到服务中 谢谢 您可以使用ref设置您的成员变量,该变量是服务变量

我知道您可以使用以下方法简单地在单元测试方法中注入服务:

defineBeans {
   someService(SomeService)
}
但是当我需要在服务中注入服务时(服务
someService
调用另一个服务
some2Service
)。当我使用上述代码运行测试时,我收到:

Message: Cannot invoke method someMethod() on null object
是否可以在单元测试中将服务注入到服务中


谢谢

您可以使用ref设置您的成员变量,该变量是服务变量

MyService(MyProvider) {
        userDetailsService = ref("userDetailsService")
        springSecurityService = ref("springSecurityService")
        userService = ref("userService")
    }

希望这有助于在单元测试中使用SpringBean,您需要执行以下操作:

  • defineBeans
    闭包中包括测试所依赖的所有服务和其他bean
  • 对于需要注入其他bean的bean,将
    autowire
    属性设置为
    true
例如:

defineBeans {
    someService(SomeService) { bean ->
        bean.autowire = true
    }
    some2Service(Some2Service)
}

Grails2.24支持它吗?Grails2.2.4版本支持它吗?是的。。。我使用的是1.3.6版