Skip to main content
Version: 25.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/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');
// Используйте isTest, чтобы описать плагины и пресеты, которые будут использоваться только с Jest.
return {
// ...
};
};

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

// jest.config.js
module.exports = {
transform: {},
};
**Поддержка Babel 6**

В 24-й версии Jest прекратил поддерживать Babel 6. Мы настоятельно рекомендуем вам обновиться до Babel 7, который активно поддерживается. Однако, если вы не можете перейти на Babel 7, то либо используйте Jest 23, либо обновитесь до Jest 24 вручную заблокировав babel-jest на 23-й версии, как показано ниже:

"dependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.6.0",
"babel-preset-env": "^1.7.0",
"jest": "^24.0.0"
}

Хотя мы обычно рекомендуем использовать одну и ту же версию каждого пакета Jest, данное решение позволит вам продолжить использовать последнюю версию Jest с Babel 6.

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

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

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

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

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

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

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

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

yarn add --dev @types/jest