Документация Jest
Установите Jest с помощью вашего любимого менеджера пакетов:
- npm
- Yarn
npm install --save-dev jest
yarn add --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 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, установите необходимые зависимости:
- npm
- Yarn
npm install --save-dev babel-jest @babel/core @babel/preset-env
yarn add --dev babel-jest @babel/core @babel/preset-env
Настройте Babel для поддержки вашей текущей версии Node, создав файл babel.config.js в корне вашего проекта:
module.exports = {
presets: [['@babel/preset-env', {targets: {node: 'current'}}]],
};
Идеальная настройка для Babel зависит от вашего проекта. Подробнее см. документацию Babel.
Настройка 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автоматически устанавливается при установке Jest и автоматически преобразует файлы, если в вашем проекте существует конфигурация babel. Чтобы избежать этого поведения, вы можете явно сбросить параметр конфигурации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
npm install --save-dev @babel/preset-typescript
yarn add --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
npm install --save-dev ts-jest
yarn add --dev ts-jest
Определения типов
Существует два способа обеспечить типизацию глобальных API Jest для тестовых файлов, написанных на TypeScript.
Вы можете использовать определения типов, которые поставляются с Jest и обновляются каждый раз при обновлении Jest. Просто импортируйте API из пакета @jest/globals:
import {describe, expect, test} from '@jest/globals';
import {sum} from './sum';
describe('sum module', () => {
test('adds 1 + 2 to equal 3', () => {
expect(sum(1, 2)).toBe(3);
});
});
См. дополнительную документацию по использованию describe.each/test.each и mock functions.
Или вы можете установить пакет @types/jest. Он предоставляет типы для глобальных переменных Jest без необходимости их импорта.
- npm
- Yarn
npm install --save-dev @types/jest
yarn add --dev @types/jest
Обратите внимание, что @types/jest — это сторонняя библиотека, поддерживаемая в DefinitelyTyped, поэтому последние функции или версии Jest могут пока не быть покрыты. Постарайтесь максимально точно соответствовать версиям Jest и @types/jest. Например, если вы используете Jest 27.4.0, то установка 27.4.x версии @types/jest является идеальной.
© 2022 Facebook, Inc.
Licensed under the MIT License.
https://jestjs.io/docs/getting-started