intermediate

Arrange, Act, Assert и deterministic tests

Структурируйте intent, контролируйте time и randomness, изолируйте side effects и делайте failures reproducible вместо intermittent.

Arrange-Act-Assert структурирует тест: подготовка данных и зависимостей, выполнение поведения, проверка результата — по возможности один логический act на тест. Детерминированные тесты дают один и тот же результат: fake timers, фиксированные seed для random, stub UUID, без реальной сети и sleep с гонками.

Flaky тесты подрывают доверие — карантин, исправление причины или удаление, а не бесконечные retries.

На интервью: разбор flaky (timing, shared state, порядок) и AAA-рефакторинг.

Типовые ошибки: несколько несвязанных assert скрывают причину; `setTimeout` без стратегии ожидания; глобальные mutable фикстуры.

Компромисс — строгая изоляция против реалистичного async — документируйте, зачем нужны ожидания.

Чеклист:

  • Один явный Act на тест.
  • Заморозка времени и randomness на границах.
  • Воспроизведите flake локально до merge retries.