Getting Started
Установите 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.
Дополнительная конфигурация
С использованием Babel
Для использования Babel, установите пакеты babel-jest
и regenerator-runtime
:
yarn add --dev babel-jest babel-core regenerator-runtime
Примечание: Если вы используете Babel версии 7, то вам нужно установить
babel-jest
,babel-core@^7.0.0-bridge.0
и@babel/core
следующей командой:
yarn add --dev babel-jest babel-core@^7.0.0-bridge.0 @babel/core regenerator-runtime
Вам понадобится использовать `babel.config.js`, чтобы транспайлить `node_modules`. Читайте на https://babeljs.io/docs/en/next/config-files более подробную информацию об этом.
Вы также можете взглянуть на пример в репозитории Jest: https://github.com/facebook/jest/tree/54f4d4ebd3d1a11d65962169f493ce41efdd784f/examples/babel-7
*Примечание: явная установка `regenerator-runtime` не требуется если вы используете `npm` версии 3 или 4 либо Yarn*
Не забудьте добавить файл [`.babelrc`](https://babeljs.io/docs/usage/babelrc/) в корневую папку вашего проекта. Например, если вы используете ES6 и [React.js](https://facebook.github.io/react/) вместе с [`babel-preset-env`](https://babeljs.io/docs/plugins/preset-env/) и [`babel-preset-react`](https://babeljs.io/docs/plugins/preset-react/):
```json
{
"presets": ["env", "react"]
}
Теперь вы можете использовать все возможности ES6 и React синтаксис.
Примечание: Если вы используете более сложную конфигурацию Babel используя
env
опцию в Babel, то имейте в виду, что Jest автоматически укажетNODE_ENV
равнойtest
. Jest не будет использовать значениеdevelopment
как Babel делает по умолчанию, когда явно не задан параметрNODE_ENV
.Примечание: если вы выключили транспиляцию ES6 модулей через
{ "modules": false }
, вам необходимо убедиться, что эта транспиляция включена в вашем тестовом окружении.
{
"presets": [["env", {"modules": false}], "react"],
"env": {
"test": {
"presets": [["env"], "react"]
}
}
}
Примечание:
babel-jest
автоматически устанавливается при установке Jest и преобразует файлы если в вашем проекте есть существующая конфигурация babel. Для обхода данного поведения, вы можете явно сбросить опциюtransform
в конфигурации:
// package.json
{
"jest": {
"transform": {}
}
}
С использованием Webpack
Jest может использоваться в проектах, использующих webpack для управления ресурсами, стилями и компиляцией. webpack действительно вносит некоторые уникальные сложности в сравнении с другими инструментами. Обратитесь к разделу руководство по работе с Webpack для начала работы.
С использованием Parcel
Jest может использоваться в проектах, использующих parcel-bundler для управления изображениями, стилями и компиляцией аналогично webpack Parcel не требует настройки Обратитесь к официальной документации.
С использованием TypeScript
Чтобы использовать TypeScript в ваших тестах, вы можете подключить ts-jest.
Вы также можете установить модуль @types/jest
для версии Jest которую вы используете. Это поможет обеспечить полный набор текста при написании ваших тестов с TypeScript.
Для модулей
@types/*
рекомендуется сопоставлять версию Jest с версией связанного модуля. Например, если вы используете26.4.0
версиюjest
, то использование26.4.x
из@types/jest
является идеальным. В целом, старайтесь максимально приблизить основную (26
) и минорную (4
) версию.
yarn add --dev @types/jest