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