В Jest, globalSetup и globalTeardown — это специальные методы, которые позволяют выполнять действия до начала всех тестов и после их завершения соответственно. Эти методы полезны для инициализации глобальных ресурсов, таких как базы данных, или для очистки ресурсов после завершения всех тестов.
- Создание файлов для
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");
};- Указание путей к файлам в конфигурации 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"
}
}-
Использование
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",
};