¿Es necesario probar las validaciones de ActiveRecord o ya están bien probadas y por lo tanto son lo suficientemente confiables?¿Es necesario probar las validaciones de ActiveRecord?
Respuesta
Las validaciones per se deberían ser confiables, pero es posible que desee verificar si la validación está presente. En otras palabras, una buena manera de probar algo es como si se tratara de una caja negra, haciendo abstracción de las pruebas de la implementación, por ejemplo, puede tener una prueba que verifique que un modelo de persona no se puede guardar sin un nombre, pero no les importa cómo la clase Persona realiza esa validación.
Debería ser suficiente para aceptar que las bibliotecas como ActiveRecord son mejor probadas por los desarrolladores de lo que nunca serán por usted: para ellos es una preocupación principal, para usted es, en el mejor de los casos, tangencial.
Eso no quiere decir que no haya errores - encontré uno pequeño el adaptador MS SQL Server hace mucho tiempo - pero el tipo de prueba que probablemente implementará es muy poco probable que los exponga como es más probable que sean casos extremos. Si hace encuentra un error, por supuesto, ¡probablemente sea muy útil si lo denuncia con un caso de prueba que lo exponga!
Solo probaría las partes internas de ActiveRecord si estuviera tratando de comprender mejor un aspecto particular que implementa la biblioteca. No incluiría esas pruebas exploratorias en ningún proyecto de aplicación, ya que no son realmente relevantes para el proyecto.
En general, debe escribir pruebas para el código que usted mismo escribe: si vive o intenta vivir en un mundo TDD, las pruebas deben escribirse antes. Si sus modelos tienen reglas de validación, seguramente debería escribir pruebas para asegurarse de que las reglas estén presentes. En la mayoría de los casos, las pruebas serán triviales, pero realmente serán útiles si una línea se borra involuntariamente en algún momento en el futuro ...
Como Mike escribió, al menos debes probar que la validación existe . Es solo un poco de contabilidad de doble entrada (control de cordura) que es bastante fácil de hacer.
Dependiendo de la situación, también se debe probar que su modelo es válido o no válido en circunstancias particulares. Por ejemplo, si su campo requiere un formato determinado, pruebe los formatos de ejemplo que son válidos y los que no. Es mucho más fácil ver lo que esto significa mediante la lectura de algunos ejemplos de sus pruebas:
class Person < ActiveRecord::Base
validates_format_of :email,
:with => /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})\Z/i
end
Sí, las validaciones están bien probada y fiable suficiente. Pero su uso correcto de las validaciones es lo que quiere verificar.
Como nota al margen, la entrada de blog de Ryan Bigg has_and_belongs_to_many double insert menciona que alguien ha encontrado un error en ActiveRecord (no relacionado con la validación, sin embargo). Como él señala, no asumas que Rails no puede tener un error, porque sabemos que hay 900 tickets abiertos para Rails.
Pero sí, la razón principal por la que escribiría una prueba es verificar que su uso de ActiveRecord sea correcto.
- 1. Ejecutar validaciones de ActiveRecord sin guardar
- 2. ¿Es necesario probar la definición de interfaz?
- 3. Cómo saltear las validaciones de has_secure_password
- 4. ¿Cómo guardar algo en la base de datos después de las validaciones fallidas de ActiveRecord?
- 5. ¿Por qué no puedo verificar las validaciones de ActiveRecord en la consola?
- 6. Cómo probar la igualdad de objetos (ActiveRecord)
- 7. ¿Cómo probar qué validación falló en ActiveRecord?
- 8. Aplanar las validaciones de Scalaz anidadas
- 9. validaciones i18n
- 10. Componer validaciones de Scalaz
- 11. ¿Es necesario sincronizar las escrituras/lecturas de .NET SerialPort?
- 12. ¿Es necesario var var las variables de bucle en CFScript?
- 13. ¿Es SaveChanges() necesario con las importaciones de funciones (procedimientos almacenados)?
- 14. ¿Es necesario probar el BOOL finalizado en un controlador de finalización para la animación de UIView?
- 15. GLES2 ¿Es glBindAttribLocation() necesario?
- 16. ¿Es realmente necesario CDATA?
- 17. ¿Es necesario volátil aquí?
- 18. ¿Es necesario KillTimer?
- 19. jquery - ¿Es $ (documento) necesario?
- 20. ¿Es necesario AssemblyInfo.cpp?
- 21. ¿Es realmente necesario KillTimer?
- 22. ¿Cuándo es necesario deshacerse?
- 23. string.c_str() ¿es necesario desasignar?
- 24. validaciones de asociación factory_girl
- 25. MongoMapper: ¿Cómo se guarda una instancia de modelo omitiendo las validaciones pero no las devoluciones?
- 26. Rieles: atributos de actualización que se enfrentan con las validaciones
- 27. ¿Cómo puedo probar ActiveRecord :: RecordNotFound en mi aplicación Rails?
- 28. Restringir las columnas representadas en ActiveRecord
- 29. TDD: ¿Cuál es la mejor práctica para probar las anotaciones de datos en ASP.NET MVC 3?
- 30. .NET Enhebrado: es necesario un bloqueo para las asignaciones