2012-09-06 27 views
10

Ben Sadece kullanarak birim test yönteminde bir hizmet enjekte biliyoruz:enjekte Hizmetleri

defineBeans { 
    someService(SomeService) 
} 

Ama bir hizmet (kendisini başka bir hizmet çağıran someService hizmet içi hizmet enjekte etmek gerektiğinde some2Service). Yukarıdaki kod ile testi zaman alırsınız:

Message: Cannot invoke method someMethod() on null object 

birim testinde bir hizmete bir hizmet enjekte etmek mümkün mü?

Teşekkürler. ;-)

cevap

9

yardımcı

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

Umut ref kullanmaktır sizin üye değişkeni ayarlayabilirsiniz aşağıdakileri yapmanız gerekir:

  • defineBeans kapamasındaki sınamaya bağlı olarak, tüm hizmetleri ve diğer çekirdekleri dahil edin.
  • autowire özelliğini true değerini diğer çekirdeklerin enjekte edilmesi gereken çekirdekler için ayarlayın. Örneğin

:

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

sürümünde kullanılır Ben Grails 2.24 desteklenmektedir? –

+0

, Grails 2.3.9'da çalışıyor – jerryb