Injeção de dependencias Test Case
27/09/2013 10:26
0
Olá a todos,
estou tentando executar um testes em minha aplicação porem ocorre o seguinte erro em um dos testes:

java.lang.NullPointerException: Cannot invoke method paginate() on null object
at rlsistema.ContaCorrenteController$_closure4.doCall(ContaCorrenteController.groovy:81)
at rlsistema.ContaCorrenteControllerTests.testList(ContaCorrenteControllerTests.groovy:40)


Aqui a linha 81 do ContaCorrenteController.groovy:

def list = {
queryService.paginate(params)
...
}


Antes que perguntem se eu coloquei o "def queryService" no começo do meu controlador ContaCorrenteController, sim, está lá certinho, tanto que no "run-app" a aplicação executa normalmente, apenas na parte de testes que eu tenho esse problema.

Tenho que configurar alguma coisa para arrumar esse erro? Alguma ideia?
Tags: test junit service


0
No setup do teste vc deu tipo controller = new ContaCorrenteController(), certo?

As dependencias não são preenchidas automaticamente assim. Com a aplicação rodando, as dependencias aparecem lá magicamente por que o Grails obtem a instancia do controller pelo Spring, ao invés de instanciar diretamente.

No caso vc teria que manualmente preencher isso... tipo:
controller = new ContaCorrenteController()
controller.queryService = new QueryService()

É por isso que eu prefiro injeção de dependencias via construtor a usar este auto-wiring: Simplemente torna-se impossivel instanciar o objeto e se esquecer de passar alguma dependencia.


0
Você deve usar o @Mock(QueryService) na classe de teste


0
Talvez isto resolva seu problema.


@Test void testService(){
defineBeans { queryService(QueryService) }
assert controller.queryService != null
}



Ainda não faz parte da comunidade???

Para se registrar, clique aqui.


Aprenda Groovy e Grails com a Formação itexto!

Newsletter Semana Groovy

Assinar

Envie seu link!


Livro de Grails


/dev/All

Os melhores blogs de TI (e em português) em um único lugar!

 
Creative Commons
RSS Grails Brasil é mantido por itexto Consultoria.
Em caso de problemas contacte Henrique Lobo Weissmann (Kico) por e-mail: kico@itexto.com.br
Todo o conteúdo presente neste site adota o Creative Commons como licença padrão.
Ver: 4.14.0
itexto