Я хочу использовать jest для тестирования моего сервера (вместо mocha + chai). Есть ли способ, которым я могу запускать функцию async до начала всех тестов (целей init) только один раз, а не для каждого тестового файла? А также, если есть способ запустить что-то после завершения всех тестов?
Jest запускает асинхронную функцию ONCE перед всеми тестами
Ответ 1
Если вы выполняете тесты jest с помощью npm, вы можете запустить любую команду node или любой исполняемый файл перед выполнением другой команды
"scripts": {
"test": "node setup.js && jest"
}
теперь вы можете запустить это с помощью команды
$ npm t
Ответ 2
Jest предоставляет beforeAll
и afterAll
. Как и в случае test
/it
, он будет ждать разрешения на обещание, если функция вернет обещание.
beforeAll(() => {
return new Promise(resolve => {
// Asynchronous task
// ...
resolve();
});
});
Он также поддерживает стиль обратного вызова, если у вас есть какой-то существующий тестовый код, который использует обратные вызовы, хотя рекомендуется использовать promises.
beforeAll(done => {
// Asynchronous task
// ...
done();
});
Ответ 3
Эта функция была добавлена в версия Jest 22 с конфигурациями globalSetup
и globalTeardown
.