【问题标题】:Inject Services in Grails Unit Test在 Grails 单元测试中注入服务
【发布时间】:2012-08-31 10:31:36
【问题描述】:
我知道您可以使用以下方法在单元测试方法中简单地注入服务:
defineBeans {
someService(SomeService)
}
但是当我需要在服务中注入服务时(服务someService 将自己称为另一个服务some2Service)。当我使用上面的代码运行测试时,我收到:
Message: Cannot invoke method someMethod() on null object
是否可以在单元测试中将服务注入到服务中?
谢谢。 ;-)
【问题讨论】:
标签:
unit-testing
grails
dependency-injection
【解决方案1】:
要在单元测试中使用 Spring bean,您需要执行以下操作:
- 在
defineBeans 闭包中包含测试所依赖的所有服务和其他 bean。
- 对于需要注入其他 bean 的 bean,将
autowire 属性设置为 true。
例如:
defineBeans {
someService(SomeService) { bean ->
bean.autowire = true
}
some2Service(Some2Service)
}
【解决方案2】:
您可以使用 ref 设置您的服务成员变量
MyService(MyProvider) {
userDetailsService = ref("userDetailsService")
springSecurityService = ref("springSecurityService")
userService = ref("userService")
}
希望有帮助