Чем Vitest отличается от Jest и что выбрать?
Unit и компонентные тесты
Jest — давний стандарт для JavaScript-тестов, Vitest — современный раннер, построенный на Vite с похожим API.
Сходства
Почти одинаковые describe, it, expect, моки (vi.fn вместо jest.fn), покрытие и снапшоты. Тесты на Jest обычно переносятся с небольшими правками.
Отличия
- Vitest использует конфигурацию и трансформации Vite, поэтому в проектах на Vite не нужна отдельная настройка Babel или ts-jest.
- Он нативно поддерживает ESM и TypeScript и быстрее стартует благодаря параллелизму и режиму watch с горячей перезагрузкой.
- Jest богаче экосистемой и дольше проверен в больших монорепозиториях, особенно на React Native.
import { describe, expect, it, vi } from 'vitest';
describe('sum', () => {
it('adds numbers', () => {
expect(sum(1, 2)).toBe(3);
});
});Выбор
Проект на Vite — Vitest. Старый проект с Jest и большим набором тестов — оставить Jest, переход ради скорости оправдан не всегда.
Коротко для собеседования
API почти одинаковый. Vitest удобнее и быстрее вместе с Vite и TypeScript, Jest стабильнее в устоявшихся системах.