Impossible d'effectuer un test unitaire avec une fonction qui a l'instruction createCriteria ()
-
28-10-2019 - |
Question
Je veux écrire un test unitaire (par JUnit) pour tester la valeur de cette fonction dans Groovy:
String getPeopleNamesById(int[] peopleIds) {
List<String> names = People.createCriteria().list{
projections { property("name") }
'in' ("id", peopleIds)
}
return names ? names.join(", ") : "";
}
Mais le test unitaire échoue toujours lors de la lecture de cette instruction: List names= People.createCriteria (). list {...} groovy.lang.MissingMethodException: Aucune signature de la méthode: People.createCriteria () est applicable pour les types d'argument: () valeurs: []. Je suppose que c'est à cause de l'appel à des fonctions qui exécutent certaines connexions et requêtes DB? Pouvez-vous m'aider à écrire ce test?Merci beaucoup!
La solution
Les requêtes de critères ne sont pas disponibles dans les tests unitaires et ne sont pas fournies par mockDomain
.Vous pouvez vous moquer de vos requêtes de critères vous-même, par exempleavec mockFor
, ou faites de votre test un test d'intégration, où vous avez accès à un environnement de base de données complet.
Voici un exemple de la façon dont vous pourriez vous moquer de votre requête:
mockFor(People).demand.static.createCriteria = { ->
[list: { closure -> [ <some mock objects> ] } ]
}