В 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'
};