Что такое TDD и в чём его смысл?
Основы тестирования
TDD (Test-Driven Development) — подход, при котором тест пишут раньше кода, а реализацию делают минимальной, чтобы он прошёл.
Цикл Red, Green, Refactor
- Red — пишем тест на ещё не существующее поведение, он падает.
- Green — пишем самый простой код, чтобы тест прошёл.
- Refactor — улучшаем код, не ломая тесты.
Что даёт
- Продуманный интерфейс: сначала думаешь, как будет использоваться функция.
- Набор тестов растёт вместе с кодом.
- Смелый рефакторинг под защитой тестов.
Ограничения
- Требует дисциплины и хорошо подходит для логики с чёткими правилами (валидации, расчёты).
- Для исследовательской работы и вёрстки интерфейса часто неудобен.
- Плохие тесты, привязанные к реализации, превращают рефакторинг в боль.
// Red
test('formats zero', () => expect(formatPrice(0)).toBe('0 ₽'));
// Green: минимальная реализация, затем следующий тестКоротко для собеседования
TDD — короткий цикл «тест, код, рефакторинг». Он полезен там, где поведение можно сформулировать заранее, но не обязателен для всего.