intermediate

Vitest и Jest

Запускайте fast unit и integration tests с watch mode, fake timers, module mocking, snapshots где полезно и TypeScript-aware setup.

Jest и Vitest — раннеры для JS/TS с describe/it, matchers, mocking, snapshots и watch mode. Vitest использует transform pipeline Vite для быстрого cold start и нативного ESM; у Jest шире legacy-экосистема и зрелые snapshots.

Для time-dependent кода — `vi.useFakeTimers()` / `jest.useFakeTimers()`, для границ модулей — `vi.mock`, в setup — глобальные matchers вроде расширений Testing Library.

На интервью: сравните Vitest и Jest для Vite monorepo, упомяните setup, globals и TypeScript paths.

Типовые ошибки: утечка моков между тестами, snapshot без ревью, integration с чрезмерными моками.

Компромисс — скорость Vitest против зрелости плагинов Jest в смешанных legacy-репозиториях.

Чеклист:

  • Сбрасывайте моки и таймеры в `afterEach`.
  • Держите setup-файлы минимальными и явными.
  • Выбирайте раннер по bundler и потребностям ESM.