Getting Started
Установите Jest при помощи npm:
npm install --save-dev jest
Или yarn:
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" } }
Наконец, запустите npm test и Jest напечатает данное сообщение:
PASS ./sum.test.js ✓ adds 1 + 2 to equal 3 (5ms)
Вы только что успешно написали первый тест с использованием Jest!
Данный тест использует expect и toBe для проверки идентичности двух данных значений. Чтобы узнать об остальных вещах, которые можно протестировать с использованием Jest, смотрите использование вычислителей.
Запуск из командной строки #
Jest можно запустить прямо из командной строки (если он глобально указан в PATH т.е. npm install -g jest) с разнообразием полезных опций.
Вот так можно запустить Jest для проверки файлов совпадающих с my-test, используя config.json в качестве файла конфигурации и для отображения нативного уведомления ОС после завершения:
jest my-test --notify --config=config.jsonЕсли вы хотите узнать больше о запуске jest через командную строку, обратите внимание на страницу параметры командной строки Jest.
Дополнительная конфигурация #
С использованием Babel #
Для использования Babel, установите пакеты babel-jest и regenerator-runtime:
npm install --save-dev babel-jest regenerator-runtime
Примечание: явная установка regenerator-runtime не требуется если вы используете npm версии 3 или 4 либо Yarn
Не забудьте добавить файл .babelrc в корневую папку вашего проекта. Например, если вы используете ES6 и React.js с пресетами babel-preset-es2015 и babel-preset-react:
{ "presets": ["es2015", "react"] }
Теперь вы можете использовать все возможности ES6 и React синтаксис.
Примечание: Если вы используете более сложную конфигурацию Babel используя
envопцию в Babel, то имейте в виду, что Jest автоматически укажетNODE_ENVравнойtest. Jest не будет использовать значениеdevelopmentкак Babel делает по умолчанию, когда явно не задан параметрNODE_ENV.Note: If you've turned off transpilation of ES2015 modules with the option
{ "modules": false }, you have to make sure to turn this on in your test enviornment.
{ "presets": [["es2015", { "modules": false }], "react"], "env": { "test": { "presets": [["es2015"], "react"] } } }
Примечание:
babel-jestавтоматически устанавливается при установке Jest и преобразует файлы если в вашем проекте есть существующая конфигурация babel. Для обхода данного поведения, вы можете явно сбросить опциюtransformв конфигурации:
// package.json { "jest": { "transform": {} } }
С использованием Webpack #
Jest может использоваться в проектах, использующих webpack для управления активами, стилями и компиляцией. webpack действительно вносит некоторые уникальные сложности в сравнении с другими инструментами. Обратитесь к разделу руководство по работе с Webpack для начала работы.
С использованием TypeScript #
Для использования TypeScript, установите пакет ts-jest и набор типов для Jest.
npm install --save-dev ts-jest @types/jest
затем изменитe package.json таким образом чтобы раздел jest выглядел примерно так:
{ "jest": { "transform": { "^.+\\.tsx?$": "<rootDir>/node_modules/ts-jest/preprocessor.js" }, "testRegex": "(/__tests__/.*|\\.(test|spec))\\.(tsx?|jsx?)$", "moduleFileExtensions": [ "ts", "tsx", "js", "json", "jsx" ] } }