Перейти к основной части
Version: 28.x

Начало работы

Установите Jest используя ваш любимый менеджер пакетов:

npm install --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 install --save-dev babel-jest @babel/core @babel/preset-env

Настройте Babel на вашу текущую версию Node Js, создав файл babel.config.js в корне вашего проекта:

babel.config.js
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};

Идеальная конфигурация для Babel будет зависеть от вашего проекта. Смотрите документацию Babel для получения дополнительной информации.

**Добавление отдельной конфигурации для Babel только на время запуска Jest**

Jest автоматически установит для process.env.NODE_ENV значение 'test' если не указано другое. Вы можете использовать эту опцию, чтобы добавить настройки, которые будут использоваться только во время запуска Jest, например:

babel.config.js
module.exports = api => {
const isTest = api.env('test');
// You can use isTest to determine what presets and plugins to use.

return {
// ...
};
};
note

babel-jest is automatically installed when installing Jest and will automatically transform files if a babel configuration exists in your project. Для обхода данного поведения, вы можете явно сбросить опцию transform в конфигурации:

jest.config.js
module.exports = {
transform: {},
};

С использованием Webpack

Jest может использоваться в проектах, использующих webpack для управления ресурсами, стилями и компиляцией. Webpack действительно привносит некоторые особенности, способные создать проблемы программистам, в сравнении с другими инструментами. Обратитесь к разделу руководство по работе с Webpack для начала работы с ним.

С использованием Parcel

Jest может использоваться в проектах, использующих parcel-bundler для управления изображениями, стилями и компиляцией аналогично webpack Parcel не требует настройки Обратитесь к официальной документации для начала работы.

С использованием TypeScript

Через babel

Jest поддерживает TypeScript, через Babel. Сначала убедитесь, что вы следовали инструкциям по настройке Babel выше. Далее установите @babel/preset-typescript:

npm install --save-dev @babel/preset-typescript

Затем добавьте @babel/preset-typescript в список пресетов в ваш babel.config.js.

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 install --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.

::note

Для модулей @types/* рекомендуется сопоставлять версию Jest с версией связанного модуля. Например, если вы используете 26.4.0 версию jest , то использование 26.4.x из @types/jest является идеальным. В целом, старайтесь максимально приблизить основную (26) и минорную (4) версию.

:::

npm install --save-dev @types/jest