2011-06-14 6 views
6

Para las pruebas del controlador, Rails recomienda comprobar cosas como respuesta HTTP, autenticación, asignaciones, sesión y mensajes flash. Sin embargo, en la aplicación con la que estoy trabajando ahora veo muchas pruebas de Rspec con response.body.should have_tag(), que, por lo que yo sé, sería ideal para las pruebas de visualización.Ver carriles/pruebas del controlador con las mejores prácticas de rspec

Lo que me pregunto es acerca de:

¿Hay alguna considerable el rendimiento/otro tipo de sanción relacionada con dicha forma unideal de las pruebas?

Respuesta

10

Si está renderizando vistas en su controlador, esto hará que las pruebas de su controlador tomen más tiempo. Todo depende de si crees que vale la pena probar la presencia de elementos de visualización (lo que hace que tus pruebas sean más frágiles). Si lo hace, hacerlo en las especificaciones del controlador lo hace más fácil ya que no tiene que escribir un archivo de especificación de vista por separado.

Si quiere probar muchas cosas con sus vistas, entonces probablemente quiera escribir las especificaciones de vista separadas. La separación de las especificaciones de vista probablemente hará que aumente el tiempo total para que se ejecute su conjunto de pruebas. Sin embargo, para fines de depuración, quedará claro si algo está mal en una vista frente a un controlador con elementos separados.

Sospecho que la mayoría de los programadores de Rails no escriben especificaciones de vista. En su lugar, probablemente confíen en sus pruebas de integración (Capybara +/- Cucumber) para probar sus puntos de vista. Sin embargo, las pruebas de integración toman más tiempo que las pruebas unitarias. El libro RSpec brinda el siguiente argumento para escribir especificaciones de vista separadas:

Las especificaciones de vista nos brindan la oportunidad de descubrir las API que necesitamos de los controladores y modelos. Esto no es tan valioso cuando las API siguen las convenciones más estándar. El valor aumenta, sin embargo, a medida que nos alejamos de ellos ....

La única manera de realmente conocer los beneficios de ellos [ver pruebas] es aprender a escribirlos bien. Y solo cuando entiendas realmente cómo encajan en el flujo, podrás tomar decisiones bien fundamentadas sobre si usarlas y cuándo.

Cuestiones relacionadas