Что такое Jest и зачем он нужен для TypeScript?
Jest — это мощный и популярный фреймворк для тестирования JavaScript и TypeScript, разработанный компанией Meta (Facebook). Он предоставляет всё необходимое для написания unit-тестов, интеграционных тестов и snapshot-тестов «из коробки»: assertion-библиотеку, моки, шпионы, таймеры и покрытие кода. Для TypeScript Jest особенно ценен, так как позволяет проверять типы во время выполнения тестов, что повышает надёжность кода. Использование Jest с TypeScript помогает разработчикам быстрее находить ошибки, рефакторить код с уверенностью и поддерживать высокое качество проекта.
Установка и настройка
Для начала работы установите Jest и необходимые типы через npm или yarn:
npm install --save-dev jest @types/jest ts-jest typescriptЗатем инициализируйте конфигурацию Jest:
npx ts-jest config:initЭто создаст файл jest.config.js с настройками для TypeScript. Убедитесь, что в tsconfig.json установлен "module": "commonjs" или используйте ts-node для ESM.
Основные функции
- describe и it/test — группировка и написание тестов.
- expect — assertion-функция с множеством матчеров (toBe, toEqual, toContain, toThrow и др.).
- beforeEach / afterEach — хуки для подготовки и очистки окружения.
- jest.mock — автоматическое мокирование модулей.
- jest.spyOn — слежение за вызовами функций.
- Snapshot-тестирование — сравнение вывода компонентов.
- Покрытие кода — встроенная утилита
--coverage.
Пример кода на TypeScript
// math.ts
export const add = (a: number, b: number): number => a + b;
export const divide = (a: number, b: number): number => {
if (b === 0) throw new Error('Division by zero');
return a / b;
};
// math.test.ts
import { add, divide } from './math';
describe('Math functions', () => {
test('adds two numbers correctly', () => {
expect(add(2, 3)).toBe(5);
expect(add(-1, 1)).toBe(0);
});
test('throws error when dividing by zero', () => {
expect(() => divide(10, 0)).toThrow('Division by zero');
});
test('divides correctly', () => {
expect(divide(10, 2)).toBe(5);
expect(divide(9, 3)).toBeCloseTo(3);
});
});
Когда использовать Jest с TypeScript?
- Любые проекты на TypeScript — от небольших библиотек до крупных приложений.
- Разработка с TDD — Jest отлично подходит для написания тестов до реализации.
- Рефакторинг — чтобы убедиться, что изменения не сломали существующую логику.
- CI/CD пайплайны — быстрый запуск тестов и проверка покрытия.
- Тестирование React-компонентов — вместе с @testing-library/react.
Jest — это стандарт де-факто для тестирования TypeScript, благодаря простоте настройки, богатому API и отличной интеграции с современными инструментами.
Также в библиотеке
Mongoose Paginate для JavaScript (Node.js): полное руководство с примерами
Работа с Kafka в TypeScript: библиотека KafkaJS и примеры
crossbeam для Rust: полное руководство с примерами
Laravel Framework для PHP: полное руководство с примерами