2012-09-06 144 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