Impossibile eseguire il test unitario con la funzione che ha un'istruzione createCriteria ()

StackOverflow https://stackoverflow.com/questions/5386479

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!

È stato utile?

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> ] } ]
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top