Non c'è ancora supporto per le query HQL nei test di unità, ma ci stiamo lavorando. Ma non dovresti fare test di persistenza con i mock. I test di persistenza devono essere eseguiti su un database in un test di integrazione.
Solitamente trasferisco le query HQL alla classe di dominio come metodi di interrogazione statica. In questo modo sono facili da prendere in giro in un test di unità di un controller, servizio, ecc. E poi testare il metodo come parte del test di integrazione della classe dominio.
Per esempio avrei
class User {
String username
String password
...
static List findAllUsersBlahBlah(String foo, boolean bar) {
executeQuery('from User u where ...')
}
}
Poi, in una prova di unità posso prendere in giro che il metodo con i dati falsi dal momento che non mi interessa la persistenza in una prova di unità di controllo - So che è correttamente testato nel posto giusto e voglio mettere a fuoco la classe in prova, non i suoi collaboratori:
def users = [new User(...), new User(...)]
User.metaClass.static.findAllUsersBlahBlah = { String foo, boolean bar -> users }
fonte
2012-02-17 15:15:44
Grazie, che aiuta veramente – LiCheng
ho provato altre soluzioni prima, ma alla fine deve usare questo, grazie alla metamodellazione –
può causare ulteriori problemi se non si pulisce dopo l'uso. sei stato avvertito. –