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. Live testing jQuery selector
- 6. New to Unit Testing
- 7. Javascript Sandbox unit testing
- 8. Monkey testing for iPhone?
- 9. Android Service Testing
- 10. unit testing modular javascript
- 11. JUnit Exception Testing
- 12. spring junit testing
- 13. Integration Testing the Canvas
- 14. Rails unit testing associations
- 15. C++ Unit Testing Libraries
- 16. .NET Unit Testing packages?
- 17. ResourceManager and Unit Testing
- 18. Java Card Unit Testing
- 19. Asp.net MVC View Testing?
- 20. Load Testing Software
- 21. Stress Testing Aplicación ASP.Net
- 22. Unit Testing and PostSharp
- 23. PyQT GUI Testing
- 24. Tibco Unit Testing tools
- 25. Hit-testing formas SVG?
- 26. RSpec send_file testing
- 27. Java Security Testing
- 28. Security Testing a Website
- 29. SOA Services Testing
- 30. OCUnit testing NSNotification delivery
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