Я буду постоянно топить за: «Сначала тесты, потом код» – на уровне бизнес логики, но признаюсь, что у меня у самого так не всегда получается.
Тесты требует ясного ума и сил, поэтому писать по TDD получается, когда я утром только сажусь писать код. Под вечер голова настолько гудит, что хочется «написать что-нибудь, чтобы заработало». А если при этом весь день не удается решить задачу, то хочется «написать что-нибудь, чтобы блять ну хоть как-то сука заработало».
Тогда тестами я покрываю уже после того, как написал код.
Да, иногда из-за этого приходится рефакторить, потому что тесты показывают где и какой кейс упустил, а где логика просто «нелогичная».
И в этом нет ничего криминального. Это позволяет решить задачу в срок, не перегореть и, если требует ситуация, переключиться на следующую задачу.
Единственное правило: если не коммит, то PR должен иметь тесты или в следующую итерацию падает обязательная задача с покрытием тестами.
Поэтому старайтесь приоритизировать задачи, требующие TDD, на начало рабочего дня. Потом можно заняться архитектурами, инфраструктурой, клеванием пшена (если вы JS-ер) и так далее.
Доброго вечера, бэбэ