Тестирование в TypeScript с Jest

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Что такое тестирование в TypeScript?

Тестирование в TypeScript — это процесс проверки корректности работы кода, написанного на языке TypeScript, с помощью специализированных библиотек и фреймворков. TypeScript является надстройкой над JavaScript, добавляющей статическую типизацию, что делает тестирование особенно эффективным: типы помогают выявлять ошибки на этапе компиляции, а тесты проверяют бизнес-логику и поведение приложения. Основная библиотека для тестирования TypeScript — Jest, которая поддерживает TypeScript из коробки или через дополнительные конфигурации.

Зачем нужно тестирование в TypeScript?

Тестирование необходимо для обеспечения надежности кода, предотвращения регрессий, ускорения разработки и документирования поведения функций. В TypeScript тесты особенно полезны, так как они проверяют не только логику, но и соответствие типов, что снижает количество runtime-ошибок. Без тестов сложно поддерживать большие проекты, где изменения в одном модуле могут сломать другие части системы.

Как установить Jest для TypeScript?

Для установки Jest с поддержкой TypeScript выполните команды в терминале:

npm install --save-dev jest @types/jest ts-jest typescript

Затем создайте файл конфигурации jest.config.js:

module.exports = {
  preset: 'ts-jest',
  testEnvironment: 'node',
};

Или используйте команду инициализации: npx ts-jest config:init. После этого вы можете запускать тесты командой npx jest.

Основные функции Jest в TypeScript

  • describe и it — группировка и описание тестовых случаев.
  • expect — утверждения (assertions) для проверки значений.
  • matchers — встроенные функции для сравнения (toBe, toEqual, toBeTruthy и др.).
  • mock-функции — имитация зависимостей и модулей.
  • async/await — поддержка асинхронного кода.
  • coverage — встроенная утилита для измерения покрытия кода тестами.

Пример кода на TypeScript

Рассмотрим простую функцию и тест к ней:

// math.ts
export function add(a: number, b: number): number {
  return a + b;
}

// math.test.ts
import { add } from './math';

describe('add function', () => {
  it('should add two numbers correctly', () => {
    expect(add(2, 3)).toBe(5);
  });

  it('should handle negative numbers', () => {
    expect(add(-1, 1)).toBe(0);
  });

  it('should return NaN for invalid inputs', () => {
    // TypeScript не даст передать строку, но если обойти типы:
    expect(add(NaN, 5)).toBeNaN();
  });
});

Запустите тест командой npx jest. Вы увидите отчет о прохождении тестов и покрытии.

Когда использовать Jest для TypeScript?

Jest рекомендуется использовать в следующих случаях:

  • Node.js-приложения и API-серверы на TypeScript.
  • Фронтенд-проекты с React, Angular или Vue (Jest работает с DOM через jsdom).
  • Библиотеки и утилиты, где важна типобезопасность.
  • Проекты с CI/CD, где требуется автоматический запуск тестов.
  • Микросервисная архитектура для изолированного тестирования модулей.

Избегайте Jest, если вам нужно тестировать только типы (используйте tsc --noEmit) или если проект использует другой фреймворк тестирования (например, Mocha или Vitest).

Рекомендаций