Начало работы
Установите Jest с помощью yarn
:
Или npm
:
Примечание: документация Jest использует команды yarn
, но npm
также будет работать. Вы можете сравнить команды yarn
и npm
в документации yarn, здесь.
Для начала напишем тест для функции, которая складывает два числа. Во-первых создайте файл sum.js
:
Затем создайте файл с именем sum.test.js
. Он будет содержать сам тест:
Добавьте следующий раздел в package.json
:
Наконец, запустите yarn test
или npm run test
и Jest выведет это сообщение:
Вы только что успешно написали первый тест с использованием Jest!
Данный тест использует expect
и toBe
для проверки идентичности двух данных значений. Чтобы узнать об остальных вещах, которые можно протестировать с использованием Jest, смотрите использование сопоставлений.
#
Запуск из командной строкиВы можете запустить Jest прямо из командной строки (если он глобально доступен в PATH
, например yarn global add jest
или npm install jest --global
) с множеством полезных опций.
Вот так можно запустить Jest для проверки файлов совпадающих с my-test
, используя config.json
в качестве файла конфигурации и для отображения нативного уведомления ОС после завершения:
Если вы хотите узнать больше о работе с jest
в командной строке, обратите внимание на страницу параметров командной строки Jest.
#
Дополнительная конфигурация#
Создание базового файла конфигурацииИсходя из ваших нужд, Jest задаст вам несколько вопросов и создаст базовый файл конфигурации с кратким описанием для каждой опции:
#
С использованием BabelДля использования Babel, установите необходимые зависимости через yarn
:
Настройте Babel на вашу текущую версию Node Js, создав файл babel.config.js
в корне вашего проекта:
Идеальная конфигурация для Babel будет зависеть от вашего проекта. Смотрите документацию Babel для получения дополнительной информации.
**Добавление отдельной конфигурации для Babel только на время запуска Jest**
Jest автоматически установит для process.env.NODE_ENV
значение 'test'
если не указано другое. Вы можете использовать эту опцию, чтобы добавить настройки, которые будут использоваться только во время запуска Jest, например:
Примечание:
babel-jest
автоматически устанавливается при установке Jest и преобразует файлы если в вашем проекте есть существующая конфигурация babel. Для обхода данного поведения, вы можете явно сбросить опциюtransform
в конфигурации:
**Поддержка Babel 6**
В 24-й версии Jest прекратил поддерживать Babel 6. Мы настоятельно рекомендуем вам обновиться до Babel 7, который активно поддерживается. Однако, если вы не можете перейти на Babel 7, то либо используйте Jest 23, либо обновитесь до Jest 24 вручную заблокировав babel-jest
на 23-й версии, как показано ниже:
Хотя мы обычно рекомендуем использовать одну и ту же версию каждого пакета Jest, данное решение позволит вам продолжить использовать последнюю версию Jest с Babel 6.
#
С использованием WebpackJest может использоваться в проектах, использующих webpack для управления ресурсами, стилями и компиляцией. Webpack действительно привносит некоторые особенности, способные создать проблемы программистам, в сравнении с другими инструментами. Обратитесь к разделу руководство по работе с Webpack для начала работы с ним.
#
С использованием ParcelJest может использоваться в проектах, использующих parcel-bundler для управления изображениями, стилями и компиляцией аналогично webpack Parcel не требует настройки Обратитесь к официальной документации.
#
С использованием TypeScriptJest поддерживает TypeScript, через Babel. Сначала убедитесь, что вы следовали инструкциям по настройке Babel выше. Далее установите @babel/preset-typescript
через yarn
:
Затем добавьте @babel/preset-typescript
в список пресетов в ваш babel.config.js
.
Однако, есть несколько подводных камней в использовании 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
) версию.