В Jest, globalSetup и globalTeardown — это специальные методы, которые позволяют выполнять действия до начала всех тестов и после их завершения соответственно. Эти методы полезны для инициализации глобальных ресурсов, таких как базы данных, или для очистки ресурсов после завершения всех тестов.

  1. Создание файлов для globalSetup и globalTeardown: Сначала создайте отдельные файлы для каждого метода. Например, файл ./jest.globalSetup.js может содержать ваш код инициализации, а файл ./jest.globalTeardown.js — код очистки ресурсов.

    Пример содержимого файла ./jest.globalSetup.js:

    module.exports = async () => {
      // Код инициализации, который будет выполнен перед всеми тестами
      console.log('Выполняется globalSetup');
    };

Пример содержимого файла ./jest.globalTeardown.js:

    module.exports = async () => {
      // Код очистки, который будет выполнен после всех тестов
      console.log('Выполняется globalTeardown');
    };
  1. Указание путей к файлам в конфигурации Jest:

    Затем укажите пути к этим файлам в конфигурации Jest. Конфигурация обычно находится в файле package.json или jest.config.js.

    Пример конфигурации в jest.config.js:

    module.exports = {
      globalSetup: './jest.globalSetup.js',
      globalTeardown: './jest.globalTeardown.js'
    };

Пример конфигурации в package.json:

    {
      "jest": {
        "globalSetup": "./jest.globalSetup.js",
        "globalTeardown": "./jest.globalTeardown.js"
      }
    }
  1. Использование globalSetup и globalTeardown:

    • globalSetup: Эта функция должна экспортировать асинхронную функцию, которая возвращает Promise. Эта функция будет вызвана один раз перед запуском всех тестовых наборов (test suites).
    • globalTeardown: Эта функция аналогична globalSetup, но вызывается один раз после завершения всех тестовых наборов.

**Пример использования

Предположим, у вас есть база данных, которую нужно инициализировать перед запуском всех тестов и закрыть после их завершения.

jest.globalSetup.js:

const { setupDatabase } = require('./database');
 
module.exports = async () => {
  await setupDatabase();
  console.log('База данных инициализирована');
};

jest.globalTeardown.js:

const { closeDatabase } = require('./database');
 
module.exports = async () => {
  await closeDatabase();
  console.log('База данных закрыта');
};

jest.config.js:

module.exports = {
  globalSetup: './jest.globalSetup.js',
  globalTeardown: './jest.globalTeardown.js'
};

Назад