Подтвердить что ты не робот

Jest запускает асинхронную функцию ONCE перед всеми тестами

Я хочу использовать jest для тестирования моего сервера (вместо mocha + chai). Есть ли способ, которым я могу запускать функцию async до начала всех тестов (целей init) только один раз, а не для каждого тестового файла? А также, если есть способ запустить что-то после завершения всех тестов?

4b9b3361

Ответ 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.