Controller e Gorm - Teste Unitário
10/09/2012 14:18
0
Oi pessoal, tudo bem?

Uso o Grails 2.1 e estou tentando escrever alguns testes unitários para meu controlador.

Consigo testar os métodos do controlador onde não uso query nos métodos find*.
Porém, quando executo o teste de um método do controlador que faz uso de um método da classe Domain com findAll(query, queryParams), o erro é retornado:

| java.lang.UnsupportedOperationException: String-based queries like [findAll] are currently not supported in this implementation of GORM. Use criteria instead.

Não gostaria de trocar a implementação para criteria como é sugerido no texto.
Portanto, gostaria de saber como faço para implementar o mock especificamente deste método ou se vocês tem outra sugestão.

Obrigada!
Tags: gorm test mock


0
Oi Alice,

o que ocorre é o seguinte: nos testes unitários os métodos de persistência ainda não foram injetados nas classes de domínio.

Resolver o problema é fácil: basta usar a instrução mockDomain apontando para a sua classe de domínio.

Exemplos:


mockDomain(Pessoa) // insere todos os métodos necessários
/*
Passando uma lista como parametro, esta lista ira agir como se fosse o seu banco de dados.
Toda inserção vai parar na lista, assim como exclusão, pesquisa e tal.
*/
mockDomain(Pessoa, [])



Jà escrevi sobre isto no Guia Grails: http://guiagrails.itexto.com.br
Da uma lida na seção sobre testes que eu descrevo ainda mais detalhes.
Precisando de qualquer coisa, to ai!


0
Oi Kico,

Obrigada pela resposta.

Pelo que eu li até então, muita coisa mudou sobre teste das versões 1.x para 2.x.

Independente disso, eu uso mockDomain porém quando um método de busca com query é usado, o erro é lançado.

Ex, quando chamo um metodo da classe do dominio que usa criteria, a execução é feita com sucesso.
Dominio.findAll (sort:"sigla") {
isNotNull("ativo")
}

Quando o método usa query, ex:
Dominio.findAll("from Dominio d where d.ativo in (:status) ", status:[1,3,4])

O erro é lançado.
10/09/2012 16:58


0
Oi Alice, de fato.

Olha: no Grails 1.x havia problemas com a execução de criterias e também com consultas HQL como as suas. Se bobear, o problema continua na versão 2.x.

O ideal neste caso é você buscar no JIRA do projeto, que pode ser acessado neste link.

Aliás, no caso, você não deveria executar executeQuery ao invés de findAll não?



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