Impossibile eseguire il test unitario con la funzione che ha un'istruzione createCriteria ()
-
28-10-2019 - |
Domanda
Voglio scrivere un test unitario (per Junit) per testare il valore di questa funzione in Groovy:
String getPeopleNamesById(int[] peopleIds) {
List<String> names = People.createCriteria().list{
projections { property("name") }
'in' ("id", peopleIds)
}
return names ? names.join(", ") : "";
}
Ma il test unitario fallisce sempre quando si legge questa affermazione: elenco nomi = People.createcriteria (). Elenco {...} groovy.lang.MissingMethodexception: nessuna firma del metodo: People.Createcriteria () è applicabile per i tipi di argomenti: () i valori: []. Immagino che a causa della chiamata a funzioni che eseguono alcune connessioni e domande DB? Potresti aiutarmi a scrivere questo test? Grazie molte!
Soluzione
Le richieste di criteri non sono disponibili nei test unitari e non sono fornite da mockDomain
. Puoi deridere da solo le tue domande di criteri, ad es. mockFor
, o rendere il test un test di integrazione, in cui hai accesso a un ambiente completo di database.
Ecco un esempio di come potresti deridere la tua domanda:
mockFor(People).demand.static.createCriteria = { ->
[list: { closure -> [ <some mock objects> ] } ]
}