Durante un tiempo he estado tratando de aprender a escribir pruebas unitarias para mi código.
Inicialmente comencé a hacer TDD verdadero, donde no escribiría ningún código hasta que escribiera una prueba fallida primero.
Sin embargo, recientemente tuve que resolver un problema espinoso que involucraba mucho código. Después de pasar un par de semanas escribiendo pruebas y luego código, llegué a la desafortunada conclusión de que todo mi enfoque no iba a funcionar, y que tendría que tirar dos semanas de trabajo y comenzar de nuevo.
Esta es una decisión bastante mala cuando acabas de escribir el código, pero cuando también has escrito cientos de pruebas unitarias, se vuelve aún más emocionalmente difícil tirarlo todo a la basura.
No puedo evitar pensar que he desperdiciado 3 o 4 días de esfuerzo escribiendo esas pruebas cuando podría haber reunido el código como prueba de concepto y luego haber escrito las pruebas una vez que estuve satisfecho con mi enfoque.
¿Cómo manejan adecuadamente esas situaciones las personas que practican TDD? ¿Hay algún caso para doblar las reglas en algunos casos o siempre escribes servilmente las pruebas primero, incluso cuando ese código puede resultar inútil?