Как исправить ошибку Jest обнаружил следующие 3 открытых дескриптора, которые могут помешать выходу Jest - PullRequest
0 голосов
/ 12 июня 2018

Просто начинаю работать на каком-то приложении узла, используя jest для тестирования.express-generator используется для строительных лесов.
При первом тесте я получаю следующую ошибку:

Jest обнаружил, что следующие 3 открытых дескриптора могут помешать Jest выйти из

ШагиВоспроизвести:

git clone git@github.com:gandra/node-jest-err-demo.git   
cd node-jest-err-demo       
npm install   
cp .env.example .env    
npm run test  

npx envinfo --preset jest Вывод:

npx: installed 1 in 1.896s

  System:
    OS: macOS High Sierra 10.13.4
    CPU: x64 Intel(R) Core(TM) i7-6820HQ CPU @ 2.70GHz   Binaries:
    Node: 9.3.0 - /usr/local/bin/node
    Yarn: 1.5.1 - /usr/local/bin/yarn
    npm: 5.7.1 - /usr/local/bin/npm   npmPackages:
    jest: ^23.1.0 => 23.1.0

Есть идеи, как это исправить?

Вот связанная проблема на github: https://github.com/facebook/jest/issues/6446

1 Ответ

0 голосов
/ 12 июня 2018
Опция

detectOpenHandles используется для обнаружения открытых ручек, ее следует использовать обычно.Ошибка предупреждает о потенциально открытых дескрипторах:

Jest обнаружил следующие 4 открытых дескриптора, которые могут помешать Jest выйти из

Даже если дескрипторы будутпосле закрытия ошибка все равно будет отображаться.

Фактическая проблема с этим приложением состоит в том, что соединение с базой данных на самом деле не закрыто:

if (process.env.NODE_ENV === 'test') {
  mongoose.connection.close(function () {
    console.log('Mongoose connection disconnected');
  });
}

По какой-то причине NODE_ENV равно devнесмотря на то, что в документации указано, что ожидается test.

Немедленное закрытие соединения с базой данных при запуске приложения может вызвать проблемы в устройствах, которые фактически используют соединение с базой данных.Как объяснено в руководстве, подключение MongoDB должно быть в конце теста.Поскольку используется соединение по умолчанию с Mongoose, оно может быть:

afterAll(() => mongoose.disconnect());
...