Jest обнаруживает DNSCHANNEL открытого дескриптора, если используется полученный пакет узла

#node.js #unit-testing #jestjs

#node.js #модульное тестирование #jestjs

Вопрос:

Я программирую сервер в Node.js v12.18.3 , используя Express фреймворк. Мой код использует Jest для модульного тестирования. В одном из моих модулей я использовал got пакет. Но он не используется ни в одном модульном тестировании.

Я разработал следующий минимальный тест:

 const { app } = require('../app');
const { mongoose, database } = require('../database/database');
const api_dict = require("../api_dictionary");
var User = require('../models/user');

describe("===== POST "   api_dict.users_create   " Tests ===== ", () => {

    var db;

    beforeAll(async () => {
        await mongoose.connect(database, { useNewUrlParser: true, useUnifiedTopology: true });
        db = mongoose.connection;
    });

    afterAll(async () => {
        await db.close();
    });

    test("Create user", () => {
    });
});
  

Я использую jest --detectOpenHandles команду для обнаружения открытых дескрипторов. Jest обнаружил один:

 npm test

> jetfire@0.0.0 test E:Projectsgithubproject_name
> cross-env NODE_ENV=test jest --detectOpenHandles

 PASS  tests/tests.js (8.118 s)
  ===== POST /user/create Tests =====
    √ Create user (1 ms)

Test Suites: 1 passed, 1 total
Tests:       1 passed, 1 total
Snapshots:   0 total
Time:        8.196 s
Ran all test suites.

Jest has detected the following 1 open handle potentially keeping Jest from exiting:

  ●  DNSCHANNEL

      at new CacheableLookup (node_modules/cacheable-lookup/source/index.js:75:14)
      at Object.<anonymous> (node_modules/got/dist/source/core/index.js:29:24)
      at Object.<anonymous> (node_modules/got/dist/source/as-promise/types.js:16:16)
  

Как убедиться, что этот дескриптор закрыт при выполнении всех модульных тестов?

Комментарии:

1. Вы выяснили, как закрыть этот дескриптор?

2. @NireshPrabhu: Нет

3. одним из возможных решений является использование --forceExit , которое завершит соединение, не идеально, но может помочь в некоторых случаях