#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
, которое завершит соединение, не идеально, но может помочь в некоторых случаях