2009-02-12 23 views

Respuesta

14

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.

4

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 ...

3

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.

0

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.

Cuestiones relacionadas