2012-09-06 7 views
10

sé que simplemente puede inyectar un servicio en el método de prueba de la unidad usando:Inyectar Servicios en Grails ensayo Unidad

defineBeans { 
    someService(SomeService) 
} 

Pero cuando necesito para inyectar el servicio dentro de un servicio (el servicio someService sí llama a otro servicio some2Service) Cuando ejecuto la prueba con el código de recibo:

Message: Cannot invoke method someMethod() on null object 

¿Es posible inyectar un servicio en un servicio en la prueba de unidad?

Gracias. ;-)

Respuesta

9

Para utilizar granos de primavera en una unidad de prueba que tiene que hacer lo siguiente:

  • Incluye todos los servicios y otros beans de los que depende la prueba en el cierre defineBeans.
  • Establezca la propiedad autowire en true para los granos que necesitan inyectarse otros granos.

Por ejemplo:

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

¿Es compatible con Grails 2.24? –

+0

funciona en Grails 2.3.9 – jerryb

0

usted puede configurar su variable miembro que es el servicio mediante el uso de ref

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

Espero que ayude

+0

es apoyaba en Grails versión 2.2.4? –

+0

Sí, es ... He usado esto en la versión 1.3.6 – allthenutsandbolts

Cuestiones relacionadas