Spec-Zone.ru › Jest

Документация 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.config.js

Идеальная настройка для 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.config.js

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

module.exports = {
  transform: {},
};
jest.config.js

Использование 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',
  ],
};
babel.config.js

Однако есть некоторые ограничения при использовании 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);
  });
});
sum.test.ts
подсказка

См. дополнительную документацию по использованию 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API