Что это такое?
Vitest - быстрый test runner для TypeScript и JavaScript. Он хорошо работает с Vite, но его можно использовать и отдельно.
Полезен для:
- unit-тестов;
- тестирования утилит;
- React/Vue компонентов;
- проверки бизнес-логики;
- snapshot-тестов;
- coverage в CI.
Установка
pnpm add -D vitestДля DOM-тестов:
pnpm add -D jsdom @testing-library/dompackage.json
{
"scripts": {
"test": "vitest",
"test:run": "vitest run",
"coverage": "vitest run --coverage"
}
}Пример теста
import { describe, expect, test } from 'vitest';
function sum(a: number, b: number) {
return a + b;
}
describe('sum', () => {
test('складывает два числа', () => {
expect(sum(2, 3)).toBe(5);
});
});Конфигурация
vitest.config.ts
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
globals: false,
environment: 'node',
coverage: {
reporter: ['text', 'html'],
},
},
});Когда использовать
Vitest стоит подключать почти в любом продукте: он быстро запускается, хорошо типизирован и легко встраивается в CI.
Плюсы
- быстрый test runner для TS/JS;
- удобный watch mode и coverage;
- хорошо интегрируется с Vite и Testing Library.
Минусы
- для некоторых Jest-плагинов нужна адаптация;
- DOM-тестам требуется jsdom/happy-dom;
- e2e-сценарии всё равно лучше закрывать Playwright/Cypress.
Когда использовать
- нужны unit и integration тесты для TypeScript-кода;
- проект использует Vite или современный ESM;
- важны быстрые локальные запуски и CI.