Начало работы
Установите Jest используя ваш любимый менеджер пакетов:
- npm
 - Yarn
 - pnpm
 
npm install --save-dev jest
yarn add --dev jest
pnpm add --save-dev jest
Для начала напишем тест для функции, которая складывает два числа. Во-первых создайте файл sum.js:
function sum(a, b) {
  return a + b;
}
module.exports = sum;
Затем создайте файл с именем sum.test.js. Он будет содержать сам тест:
const sum = require('./sum');
test('adds 1 + 2 to equal 3', () => {
  expect(sum(1, 2)).toBe(3);
});
Добавьте следующий раздел в package.json:
{
  "scripts": {
    "test": "jest"
  }
}
Наконец, запустите yarn test или npm run test и Jest выведет это сообщение:
PASS  ./sum.test.js
✓ adds 1 + 2 to equal 3 (5ms)
Вы только что успешно написали первый тест с использованием Jest!
Данный тест использует expect и toBe для проверки идентичности двух данных значений. Чтобы узнать об остальных вещах, которые можно протестировать с использованием Jest, смотрите использование сопоставлений.
Запуск из командной строки
Вы можете запустить Jest прямо из командной строки (если он глобально доступен в PATH, например yarn global add jest или npm install jest --global) с множеством полезных опций.
Вот так можно запустить Jest для проверки файлов совпадающих с my-test, используя config.json в качестве файла конфигурации и для отображения нативного уведомления ОС после завершения:
jest my-test --notify --config=config.json
Если вы хотите узнать больше о работе с jest в командной строке, обратите внимание на страницу параметров командной строки Jest.
Дополнительная конфигурация
Создание базового файла конфигурации
Исходя из ваших нужд, Jest задаст вам несколько вопросов и создаст базовый файл конфигурации с кратким описанием для каждой опции:
jest --init
С использованием Babel
Для использования с Babel, установите необходимые зависимости через yarn:
- npm
 - Yarn
 - pnpm
 
npm install --save-dev babel-jest @babel/core @babel/preset-env
yarn add --dev babel-jest @babel/core @babel/preset-env
pnpm add --save-dev babel-jest @babel/core @babel/preset-env
Настройте Babel на вашу текущую версию Node Js, создав файл babel.config.js в корне вашего проекта:
module.exports = {
  presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
The ideal configuration for Babel will depend on your project. See Babel's docs for more details.
**Добавление отдельной конфигурации для Babel только на время запуска Jest**
Jest автоматически установит для process.env.NODE_ENV значение 'test' если не указано другое. Вы можете использовать эту опцию, чтобы добавить настройки, которые будут использоваться только во время запуска Jest, например:
module.exports = api => {
  const isTest = api.env('test');
  // You can use isTest to determine what presets and plugins to use.
  return {
    // ...
  };
};
babel-jest is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. Для обхода данного поведения, вы можете явно сбросить опцию transform в конфигурации:
module.exports = {
  transform: {},
};
С использованием Webpack
Jest может использоваться в проектах, использующих webpack для управления ресурсами, стилями и компиляцией. Webpack действительно привносит некоторые особенности, способные создать проблемы программистам, в сравнении с другими инструментами. Обратитесь к разделу руководство по работе с Webpack для начала работы с ним.
С использованием Parcel
Jest может использоваться в проектах, использующих parcel-bundler для управления изображениями, стилями и компиляцией аналогично webpack Parcel не требует настройки Обратитесь к официальной документации для начала работы.
С использованием TypeScript
Через babel
Jest поддерживает TypeScript, через Babel. Сначала убедитесь, что вы следовали инструкциям по настройке Babel выше. Далее установите @babel/preset-typescript:
- npm
 - Yarn
 - pnpm
 
npm install --save-dev @babel/preset-typescript
yarn add --dev @babel/preset-typescript
pnpm add --save-dev @babel/preset-typescript
Затем добавьте @babel/preset-typescript в список пресетов в ваш babel.config.js.
module.exports = {
  presets: [
    ['@babel/preset-env', {targets: {node: 'current'}}],
    '@babel/preset-typescript',
  ],
};
Однако, есть несколько подводных камней в использовании TypeScript вместе с Babel. Поскольку TypeScript поддерживается в Babel через транспиляцию, Jest не будет проверять типы ваших тестах когда они запущены. Если вы хотите, то вы можете использовать ts-jest взамен, или просто запустите компилятор TypeScript tsc отдельно (или как часть вашего процесса сборки).
Через ts-jest
ts-jest это препроцессор TypeScript с поддержкой исходных карт Jest, который позволяет использовать Jest для тестирования проектов, написанных на TypeScript.
- npm
 - Yarn
 - pnpm
 
npm install --save-dev ts-jest
yarn add --dev ts-jest
pnpm add --save-dev ts-jest
In order for Jest to transpile TypeScript with ts-jest, you may also need to create a configuration file.
Определения типов
Вы также можете установить модуль @types/jest для версии Jest которую вы используете. Это поможет обеспечить полный набор текста при написании ваших тестов с TypeScript.
Для модулей @types/* рекомендуется сопоставлять версию Jest с версией связанного модуля. Например, если вы используете 26.4.0 версию jest , то использование 26.4.x из @types/jest является идеальным. В целом, старайтесь максимально приблизить основную (26) и минорную (4) версию.
- npm
 - Yarn
 - pnpm
 
npm install --save-dev @types/jest
yarn add --dev @types/jest
pnpm add --save-dev @types/jest