Me gustaría probar un cierre "con Criteria" y no estoy seguro de cómo hacerlo. Veo cómo simular la llamada aCriteria, pero no probar el código dentro del cierre. Cuando ejecuto la prueba que ejecuta el "withCriteria", sigo obteniendo una MissingMethodException, aunque el código funciona bien bajo el flujo normal de ejecución. ¿Algunas ideas? Gracias! SteveGrails withCriteria testing
Respuesta
No iría por esa ruta. En cambio, movería la consulta a la clase de dominio como un método de búsqueda estático y lo probaría directamente en una prueba de integración con datos reales. Luego puede simular fácilmente el método de ayuda cuando se lo llama en un controlador o prueba de servicio.
class YourDomainClass {
...
static List<YourDomainClass> findFooBar() {
YourDomainClass.withCriteria {
...
}
}
}
Luego, en una prueba de unidad:
def results = [instance1, instance2, instance3]
YourDomainClass.metaClass.static.findFooBar = { -> results }
De esta manera se prueba que la consulta va en contra de la base de datos en memoria en una prueba de integración, pero es fácil burlarse de él en las pruebas unitarias.
No existe una implementación simulada para los criterios de Hibernate en este momento. Tendrá que usar pruebas de integración. Sin embargo, la recomendación de Burt de hacer de este un método de búsqueda estático es bueno para la organización del código. También debe consultar las consultas con nombre, descritas en http://www.grails.org/1.2+Release+Notes, para obtener una sintaxis agradable para esto.
con la respuesta de Burt, echa un vistazo a consultas con nombre como se describe aquí:
http://blog.springsource.com/2010/05/24/more-grails-1-3-features/
Luego, puede burlarse de la propiedad/método de acceso en las pruebas unitarias como se describe por Burt.
Dado que nadie mencionó la opción de crear una DSL para ejecutar otras DSL aquí hay una divulgación completa de este método. Lo uso bastante a menudo con muy buenos resultados.
- 1. Grails Spring Security Testing
- 2. UI testing vs unit testing
- 3. Integration vs Unit Testing
- 4. Testing helpers
- 5. C++ Unit Testing Libraries
- 6. Java Card Unit Testing
- 7. RSpec send_file testing
- 8. Java Security Testing
- 9. Black Box Unit Testing
- 10. UI Testing Tool?
- 11. PyQT GUI Testing
- 12. Silverlight Unit Testing
- 13. Integration Testing the Canvas
- 14. ASP.NET Session Timeout Testing
- 15. Testing Spring @MVC anotaciones
- 16. Load Testing Software
- 17. unit testing modular javascript
- 18. Hit-testing formas SVG?
- 19. Monkey testing for iPhone?
- 20. .NET Unit Testing packages?
- 21. ResourceManager and Unit Testing
- 22. Haskell IO Testing
- 23. Javascript Sandbox unit testing
- 24. Unit Testing EJB 3.1
- 25. Testing GPS en Android
- 26. HTML Canvas Unit testing
- 27. JUnit Exception Testing
- 28. Live testing jQuery selector
- 29. PHPUnit Database Testing
- 30. New to Unit Testing
Las consultas con nombre son grandes, pero no fue capaz de burlarse de ellos en las pruebas unitarias. ¿Lo hiciste funcionar o te pegaste a las pruebas de integración? – j4y