在Grails单元测试中注入服务

时间:2012-09-06 14:57:58

标签: unit-testing grails dependency-injection

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

defineBeans {
   someService(SomeService)
}

但是当我需要在服务中注入服务时(服务someService自称为另一个服务some2Service)。当我使用上面的代码运行测试时,我收到:

Message: Cannot invoke method someMethod() on null object

是否可以在单元测试中将服务注入服务?

感谢。 ; - )

2 个答案:

答案 0 :(得分:9)

要在单元测试中使用spring bean,您需要执行以下操作:

  • defineBeans闭包中包含测试所依赖的所有服务和其他bean。
  • 为需要注入其他bean的bean设置autowire属性为true

例如:

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

答案 1 :(得分:0)

您可以使用ref

设置您的成员变量即服务
MyService(MyProvider) {
        userDetailsService = ref("userDetailsService")
        springSecurityService = ref("springSecurityService")
        userService = ref("userService")
    }

希望有所帮助