Soy nuevo en las pruebas de Cucumber y estoy tratando de entender cuándo usar Cucumber y cuándo usar RSpec. Para mis modelos, sé que debería probarlos con RSpec, y sé que no necesito escribir especificaciones de solicitud de RSpec si escribo historias de Pepino. Lo que no sé cuando usar lo que es con vistas y controladores. ¿Debo usar RSpec para probar mis vistas y controladores, o puedo omitirlos porque estoy usando Pepino para mi prueba de nivel superior? ¡Cualquier consejo sería muy apreciado! ¡Gracias!Cuándo usar Pepino y cuándo usar RSpec?
Respuesta
Utilizo RSpec para impulsar el desarrollo y las pruebas de mis modelos y, en cierta medida, de mis controladores, y Cucumber para impulsar el desarrollo y la prueba de mis vistas (y su posterior integración con los controladores).
No me siento escribiendo Las pruebas de pepino me permiten "omitir" la escritura de pruebas de RSpec porque se produce mucho desarrollo en la capa de modelo antes de que se creen las vistas.
Si sigue escribiendo Escenarios de pepino en lugar de pruebas unitarias, entonces probablemente encontrará que sus pruebas tardan en ejecutarse. Si las pruebas son lentas, probablemente no las ejecutará con mucha frecuencia, por lo que su ritmo de desarrollo se ralentizará.
Puede usar RSpec para las pruebas de integración que funcionan en el mismo nivel que Cucumber. Si necesita compartir y analizar características con no desarrolladores, entonces Cucumber es de gran ayuda. Pero incluso si eres un desarrollador en solitario, Cucumber te ayuda actuando como un "guardián mental" entre el comportamiento que necesitas y la implementación subyacente.
La práctica estándar que la mayoría de la gente sigue es escribir extensas pruebas unitarias para el modelo, pruebas mínimas para el controlador, y muy raramente pruebas de unidad para la vista. Luego, usaría Cucumber para verificar que todo esté interactuando correctamente (asegúrese de que los escenarios cubran los bucles/condiciones en los controladores y las vistas).
Solo una pequeña adición que podría ser útil para usted. Mucha gente piensa (y yo también) que el pepino es más una molestia que un marco de prueba práctico para el programador. Siempre y cuando no tenga que cooperar discutiendo escenarios con clientes que no saben mucho sobre programación, le recomiendo encarecidamente que no use pepino. Estoy con DHH en este caso. Pero RSpec, uso e incluso abuso :)
No estoy seguro de si está bien recomendar un libro aquí, pero the RSpec book proporciona un buen ejemplo práctico de cómo Cucumber y RSpec se pueden intercalar para conducir el desarrollo de un pequeño juego de línea de comandos en Ruby.
En pocas palabras: escribir sus características pepino que adoptan el punto de vista de su usuario final, y las especificaciones de su RSpec utilizando su propio punto de vista como desarrollador es un buen equilibrio entre la velocidad de ejecución del banco de pruebas, granularidad de las pruebas (qué tan precisos son los mensajes de error cuando fallan las pruebas) y cobertura de la documentación (las características de Cucumber se pueden ver como una documentación siempre actualizada - the very own RSpec documentation is a great example of that).
- 1. Cuándo usar undef_method, y cuándo usar remove_method?
- 2. cuándo usar Tarea y cuándo usar Subproceso?
- 3. Cuándo usar categorías y cuándo usar subclases?
- 4. Pepino: Cuándo usar etiquetas/ganchos vs fondos
- 5. ¿Cuándo usar == y cuándo usarlo?
- 6. BDD con pepino y rspec: ¿cuándo es esto redundante?
- 7. Cuándo usar Ruby vs Cuándo usar PHP
- 8. ¿Cuándo debería usar TCP_NODELAY y cuándo TCP_CORK?
- 9. cuándo deberíamos usar instanceof y cuándo no
- 10. ¿Cuándo debería usar Silverlight y cuándo XNA?
- 11. Cuándo usar OSGi EventAdmin y cuándo no?
- 12. Cuándo usar .mdf y cuándo .sdf?
- 13. Cuándo usar Restringir y cuándo no a
- 14. Cuándo usar `zipmap` y cuándo` map vector`?
- 15. Cuándo usar GWT y cuándo no
- 16. Cuándo usar Class.isInstance() y cuándo usar el operador instanceof?
- 17. Cuándo usar componentes y cuándo usar extensiones en Yii?
- 18. Cuándo usar vectores y cuándo usar matrices en C++?
- 19. ¿Cuándo debería usar require() y cuándo usar define()?
- 20. Cuándo usar Requirejs y cuándo usar javascript incluido?
- 21. Cuándo usar assert() y cuándo usar try catch?
- 22. Cuándo usar y cuándo no usar Try Catch Finally
- 23. Cuándo deberíamos usar mutex y cuándo deberíamos usar el semáforo
- 24. Cuándo usar dup, y cuándo usar clon en Ruby?
- 25. Cuándo usar el sistema() y cuándo usar execv *()?
- 26. Cuándo usar un módulo y cuándo usar una clase
- 27. ¿Cuándo debe usar JCR y cuándo debe usar JPA/RDBMS?
- 28. Historias y especificaciones de RSpec: ¿Cuándo usar qué?
- 29. Cuándo usar, no usar, OneToOne y ManyToOne
- 30. BitmapCache? ¿Cuándo y cómo usar?
¿En qué medida envías mensajes de texto a tus controladores con RSpec? – agentbanks217
Hoy en día, muy poco, ya que trato de mantener tanta lógica en la capa de modelo, pero si por alguna razón hay un poco de lógica en una acción de controlador, me gusta escribir una especificación para cubrirla (para mi propia cordura en realidad). – Ant