Что такое Jest и как его установить

Урок знакомит с фреймворком Jest, показывает установку и базовые команды запуска.

Jest — это тестовый фреймворк для JavaScript: он находит тестовые файлы, запускает их, сравнивает результаты с ожиданиями и показывает понятный отчёт.

Почему именно Jest

Jest популярен, потому что работает «из коробки»: в одном пакете — раннер тестов, библиотека матчеров (expect), моки и измерение покрытия. Не нужно собирать набор библиотек вручную. Изначально его создали в Facebook для React, но Jest отлично подходит для любого JS/TS-кода: утилит, бэкенда на Node, библиотек.

Установка

Jest ставится как dev-зависимость (нужен только при разработке, не в продакшене). В пустой папке проекта:

npm init -y
npm install --save-dev jest

Флаг --save-dev (короткая форма -D) добавляет Jest в devDependencies в package.json.

Скрипт запуска в package.json

Чтобы не писать длинные команды, добавьте скрипт test:

{
  "name": "my-project",
  "version": "1.0.0",
  "scripts": {
    "test": "jest",
    "test:watch": "jest --watch"
  },
  "devDependencies": {
    "jest": "^29.0.0"
  }
}

Теперь тесты запускаются командой npm test.

Как запускать

Есть несколько способов:

# через npm-скрипт
npm test

# напрямую без установки в PATH
npx jest

# запустить только один файл
npx jest math.test.js

# watch-режим: перезапуск при изменении файлов
npx jest --watch

npx запускает локально установленный Jest, не требуя глобальной установки. Watch-режим особенно удобен: Jest следит за файлами и перезапускает только затронутые тесты, давая мгновенную обратную связь во время разработки.

Какие файлы Jest считает тестами

По умолчанию Jest подхватывает файлы, которые:

  • лежат в папке __tests__, либо
  • заканчиваются на .test.js или .spec.js.

Например, тесты для math.js обычно кладут рядом в math.test.js.

Первый прогон

Если тестов ещё нет, Jest честно сообщит об этом. После добавления первого теста (следующий урок) вывод будет примерно таким:

PASS  ./math.test.js
  ✓ складывает два числа (2 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Time:        0.5 s

Итог

  • Jest — это «всё в одном»: раннер, матчеры, моки и покрытие.
  • Устанавливается как dev-зависимость: npm install --save-dev jest.
  • Запуск: npm test, npx jest, watch-режим — npx jest --watch.
  • Тестовые файлы — это *.test.js, *.spec.js или содержимое __tests__/.
Проверьте себя
1. Почему Jest устанавливают с флагом --save-dev?
AЧтобы он попал в production-бандл
BПотому что Jez нужен только при разработке и не должен идти в продакшен
CЭто ускоряет тесты
DИначе Jest не найдёт тесты
2. Какие файлы Jest по умолчанию считает тестовыми?
AТолько index.js
BФайлы *.test.js / *.spec.js и содержимое папки __tests__
CЛюбые .js-файлы в проекте
DТолько файлы в папке src
3. Что делает команда npx jest --watch?
AЗапускает тесты один раз и завершается
BСледит за изменениями файлов и перезапускает затронутые тесты
CУстанавливает Jest глобально
DУдаляет старые тесты
Поддержать проект