Mi piacerebbe testare una chiusura "withCriteria" e non sono sicuro di come procedere. Vedo come prendere in giro la chiamata conCriteria, ma non testare il codice all'interno della chiusura. Durante l'esecuzione del test che esegue "withCriteria", continuo a ricevere MissingMethodException, anche se il codice funziona correttamente nel normale flusso di esecuzione. Qualche idea? Grazie! SteveGrails withCriteria testing
risposta
Non vorrei seguire questa strada. Invece avrei spostato la query nella classe di dominio come metodo di ricerca statica e l'ho testata direttamente in un test di integrazione con dati reali. Quindi puoi facilmente prendere in giro il metodo helper quando viene chiamato in un controller o test di servizio.
class YourDomainClass {
...
static List<YourDomainClass> findFooBar() {
YourDomainClass.withCriteria {
...
}
}
}
Poi, in una prova di unità:
def results = [instance1, instance2, instance3]
YourDomainClass.metaClass.static.findFooBar = { -> results }
In questo modo si prova che la query funziona contro il database in memoria in un test di integrazione, ma è facile prendere in giro in unit test.
Al momento non esiste un'implementazione fittizia per i criteri di Ibernazione. Dovrai utilizzare i test di integrazione. Tuttavia, la raccomandazione di Burt di rendere questo un metodo di ricerca statico è buona per l'organizzazione del codice. Si dovrebbe anche guardare le query denominate, descritte a http://www.grails.org/1.2+Release+Notes, per una sintassi corretta per questo.
seguito alla risposta di Burt, controlla query denominate come descritto qui:
http://blog.springsource.com/2010/05/24/more-grails-1-3-features/
È quindi possibile prendere in giro la proprietà/accesso metodo nella unit test come descritto da Burt.
Poiché nessuno ha menzionato l'opzione per creare una DSL per eseguire altri DSL, ecco una descrizione completa di questo metodo. Lo uso abbastanza spesso con ottimi risultati.
- 1. withCriteria deep level association eager fetch grails
- 2. Testing grails taglib
- 3. Testing Grails 3 app con 'gradle test' usa configurazione ambiente errata
- 4. JUnit Exception Testing
- 5. Testing delegati per l'uguaglianza
- 6. Unit Testing ViewController's Lifecycle
- 7. testing ember.js connectOutlet
- 8. RSpec send_file testing
- 9. PHP Unit testing
- 10. Omniauth Rspec testing problem
- 11. Unit Testing MVC Controllers
- 12. JUnit Testing Exceptions
- 13. Python testing ncurses
- 14. angularjs - testing controller
- 15. Testing Realm su Android
- 16. Fixtures in Golang testing
- 17. Unità Alberi Testing Espressione
- 18. Unit Testing e PostSharp
- 19. Testing minified javascript
- 20. Unit Testing Embedded Software
- 21. Debugging/Testing codice LPC
- 22. Unit Testing XQuery
- 23. Unit Testing pattern
- 24. Testing InlineFormset metodi puliti
- 25. Unit Testing Shiny Apps
- 26. Testing codice sincrono
- 27. rspec testing carrierwave - newbie
- 28. Testing se proprietà esiste
- 29. Unit Testing EJB
- 30. Unit Testing costruttore iniezione
Le query denominate sono grandi, ma non ero in grado di prendere in giro loro nei test di unità. Hai funzionato o ti sei bloccato con i test di integrazione? – j4y