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