Estoy tratando de entender BDD. He leído algunos artículos y, como entendí, BDD es "el siguiente paso" de TDD. Digo eso porque encuentro que ambos son muy similares, y como pude leer en este artículo , BDD nació como una mejora de TDD. Genial, me gusta mucho la idea.
Hay un punto práctico que no entiendo, pensé: hay un archivo .feature en el que el BA escribirá todo el comportamiento esperado en el que tendría el sistema. Como BA, no tiene idea de cómo se construye el sistema, por lo que escribiremos algo como esto:
+ Escenario 1: la cuenta está en crédito +
Dado que la cuenta está en crédito
Y la tarjeta es valida
Y el dispensador contiene efectivo
Cuando el cliente solicita efectivo
Luego asegúrese de que la cuenta sea debitada y asegúrese de que se distribuya efectivo
Y asegúrese de devolver la tarjeta
Ok, esto es genial, pero hay muchas partes del sistema que colaborarán para que pueda suceder (piense en obj de cuenta, obj de dispensador, obj de cliente, etc.). Para mí, esto parece una prueba de integración.
Me gustaría tener pruebas unitarias. ¿Cómo pruebo el código que verifica si el dispensador tiene dinero? ¿O que se dispensa el efectivo? ¿O que se debita la cuenta cuando sea necesario? ¿Cómo puedo mezclar pruebas unitarias con pruebas "BA Creado"?