Estou experimentando o desenvolvimento orientado a teste e descobri que frequentemente chego à seguinte situação:
- Escrevo testes para algumas funcionalidades X. Esses testes falham.
- Ao tentar implementar o X, vejo que preciso implementar algum recurso Y em uma camada inferior do meu código. Então...
- Escrevo testes para Y. Agora, ambos os testes para X e Y falham.
Uma vez que eu tinha quatro recursos em diferentes camadas de código sendo trabalhados ao mesmo tempo, estava perdendo meu foco no que realmente estava fazendo (muitos testes falharam ao mesmo tempo).
Eu acho que poderia resolver isso colocando mais esforço no planejamento de minhas tarefas antes mesmo de começar a escrever testes. Mas, em alguns casos, eu não sabia que precisaria ir mais fundo, porque, por exemplo, não conhecia muito bem a API da camada inferior.
O que devo fazer nesses casos? O TDD tem alguma recomendação?