2012-09-06 139 views
10

我知道,你可以在单元测试方法,使用简单地注入服务:进样服务Grails的单元测试

defineBeans { 
    someService(SomeService) 
} 

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

Message: Cannot invoke method someMethod() on null object 

是否可以在服务中向服务注入服务?

谢谢。 ;-)

回答

9

要在单元测试中使用Spring bean的是服务,你需要做到以下几点:

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

例如:

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

它支持Grails 2.24吗? –

+0

在Grails 2.3.9中工作 – jerryb

0

你可以设置你的成员变量,其利用裁判

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

希望帮助

+0

是在Grails的2.2.4版本支持? –

+0

是的,我用这个版本是1.3.6 – allthenutsandbolts