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

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

Установите Jest с помощью yarn:

yarn add --dev jest

Или npm:

npm install --save-dev jest

Примечание: документация Jest использует команды yarn, но npm также будет работать. Вы можете сравнить команды yarn и npm в документации yarn, здесь.

Для начала напишем тест для функции, которая складывает два числа. Во-первых создайте файл 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:

yarn add --dev babel-jest @babel/core @babel/cli @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 {
// ...
};
};

Примечание: babel-jest автоматически устанавливается при установке Jest и преобразует файлы если в вашем проекте есть существующая конфигурация babel. Для обхода данного поведения, вы можете явно сбросить опцию transform в конфигурации:

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

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

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

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

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

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

Using TypeScript via Babel

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

yarn add --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 отдельно (или как часть вашего процесса сборки).

Using TypeScript via ts-jest

ts-jest это препроцессор TypeScript с поддержкой исходных карт Jest, который позволяет использовать Jest для тестирования проектов, написанных на TypeScript.

yarn add --dev ts-jest

Вы также можете установить модуль @types/jest для версии Jest которую вы используете. Это поможет обеспечить полный набор текста при написании ваших тестов с TypeScript.

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

yarn add --dev @types/jest