tutorial test rails how ruby-on-rails ruby unit-testing testing shoulda

ruby-on-rails - test - rspec rails 5



¿Por qué debería usar RSpec o shoulda con Rails? (8)

Aquí hay dos cosas diferentes:

Lo primero es qué marco usar para escribir pruebas / especificaciones. Aquí puede elegir entre Test :: Unit, RSpec, Shoulda, etc. La elección es si quieres hacer un TDD tradicional (Test :: Unit) o ​​si prefieres las formas alternativas de pensar sobre la especificación del comportamiento defendido por desarrolladores como David Chemlinsky (RSpec y hasta cierto punto Shoulda).

Lo segundo es cómo manejar los datos de prueba. Existen accesorios y alternativas de Rails diseñados con otros objetivos, como el complemento FixtureReplacement . Antes de Rails 2.0 los accesorios tenían problemas prácticos importantes y bien documentados. Muchos de los problemas prácticos se solucionaron en Rails 2.0. Sin embargo, los accesorios pueden provocar un acoplamiento de prueba inadvertido y algunas de las alternativas intentan evitarlo.

Estoy configurando una aplicación de rieles y acabo de hacer algunas pruebas unitarias y mi amigo dijo que aparentemente los accesorios ya no son geniales y las personas ahora están usando RSpec o shoulda. Me preguntaba cuáles serían los beneficios reales de usar estos otros kits de herramientas. Cualquier información es apreciada.

-FREW



Personalmente prefiero Shoulda a RSpec. Encuentro que Shoulda tiene menos sintaxis mágica que RSpec. Mi problema con RSpec es que sí, es muy legible cuando lo leo en voz alta, pero cuando lo escribo, hmmmm, nunca estoy seguro de cómo se debe escribir una afirmación determinada. Prag Dave explica el problema mejor que yo . También le gusta Shoulda y tiene algunos ejemplos.


Puede usar framework de pruebas como Cucumber que es aún más rápido que RSpec ..


RSpec es mucho más potente porque es mucho más fácil leer y escribir en las pruebas. También es muy elegante cuando se utilizan simulaciones y trozos, un concepto que será extremadamente útil una vez que comiences a usarlos en tus pruebas. Pruébelo en una aplicación de prueba simple (¡NO FERROVIAR!) Y verá qué tan elegantes son sus especificaciones frente a las pruebas estándar equivalentes.


RSpec y marcos similares son herramientas diseñadas para ayudar en el desarrollo impulsado por el comportamiento. No son solo una forma más bonita de escribir pruebas, aunque sí ayudan con eso.

Hay mucha información sobre BDD aquí: http://behaviour-driven.org/ Y wikipedia: http://en.wikipedia.org/wiki/Behavior_Driven_Development

Hay demasiados beneficios para enumerar aquí, por lo que le recomiendo que explore ese sitio un poco.


Si está compilando una aplicación grande y no tiene un equipo que sea realmente bueno para escribir un código desacoplado que pueda ser probado con pruebas de caja negra y esté preparado para utilizar completamente / depurar un montón de burlas y trozos, no lo haga. ir por la carretera de la fábrica.

Donde sea que leas acerca de cómo son las Fábricas Impresionantes, verás una pequeña advertencia sobre cómo las fábricas podrían no ser factibles en una aplicación grande porque son un poco más lentas que las luminarias.

Pero "un poco más lento" es realmente órdenes de magnitud más lentas.

Las fábricas no son significativamente más fáciles de codificar que las luminarias que usan etiquetas para identificadores, siempre y cuando se mantengan organizados. Y en algunos casos las fábricas son más difíciles de depurar.

Justo esta noche convertí una sola fábrica en accesorios, y el tiempo de ejecución del archivo de prueba que lo usó pasó de 65 segundos a 15 segundos, a pesar de que solo el 15% de las pruebas en ese archivo de prueba usan esa fábrica.

Si usa minitest, puede ejecutar sus pruebas en orden aleatorio; esto revelará rápidamente cualquier acoplamiento de datos entre las pruebas. (no estoy seguro si rspec tiene la opción de aleatorizar orden de prueba)


Test :: Unit es bueno para pequeñas aplicaciones. ¡Pero hay muchos beneficios para usar frameworks de prueba como Shoulda o RSpec, por ejemplo contextos!

No veo a Shoulda y a RSpec en una relación de ambos. Yo uso Shoulda como un sustituto de RSpec cuando se trata de pruebas de afirmación única. Me gustan mucho los Shoulda one-liners, pero escribir correspondencias es mucho más fácil en RSpec. Así que mi consejo es usar las diferentes herramientas de prueba donde mejor se adaptan.