You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

迁移至Jest 26后NestJS测试出现句柄泄漏问题求助

Jest 26迁移后NestJS测试出现句柄泄漏问题

我有一个使用Jest进行测试的NestJS应用,此前在Jest 25版本下测试一切正常,但迁移至Jest 26后,测试完成后出现了句柄泄漏问题。

Jest 25中的测试初始化与清理逻辑

在Jest 25中,我通过以下代码完成测试的初始化与清理:

初始化代码

beforeAll(async () => {
  const moduleFixture = await Test.createTestingModule({
    imports: [AssignmentsModule, TimeSheetsModule, ExpensesModule, SessionModule]
  })
  .compile();

  assignmentService = moduleFixture.get<AssignmentsService>(AssignmentsService);
  assignmentsController = moduleFixture.get<AssignmentsController>(AssignmentsController);
  app = moduleFixture.createNestApplication();
  await app.init();
  server = await app.getHttpServer();

  serverRequest = await request(server);
  authorizationHeaders = await getAuthorizationHeaders(serverRequest);
});

清理代码

afterAll(async () => {
    await serverRequest.end();
    await server.close();
    await app.close();
});

迁移后的错误

迁移至Jest 26后,await serverRequest.end()返回错误,提示该函数已不存在。

句柄泄漏日志

我通过require('leaked-handles')生成了泄漏日志,示例如下:

http server handle leaked at one of: 
    at ExpressAdapter.initHttpServer (/Users/princetone/Projects/TOLv4/tes-timeonline-api/node_modules/@nestjs/platform-express/adapters/express-adapter.js:144:36)
http server handle { fd: 16, address: { address: '::', family: 'IPv6', port: 50272 } }

http handle leaked at one of: 
    at Test.Object.<anonymous>.Request.request (/Users/princetone/Projects/TOLv4/tes-timeonline-api/node_modules/superagent/lib/node/index.js:622:31)
http stream {
  fd: 18,
  readable: true,
  writable: true,
  address: { address: '127.0.0.1', family: 'IPv4', port: 50273 },
  method: 'GET',
  path: '/time-sheets/ML4W3K',
  host: '127.0.0.1:50272'
}

http stream {
  fd: 17,
  readable: true,
  writable: true,
  address: { address: '::ffff:127.0.0.1', family: 'IPv6', port: 50272 },
  method: undefined,
  path: undefined,
  host: undefined
}

运行环境

  • node v14
  • npm v6
  • jest v26
  • @nestjs/core、@nestjs/common、@nestjs/testing v9.4.3

我已花费大量时间查找解决方案,能否有人指出Jest 26中的哪些变更可能导致此问题?


内容的提问来源于stack exchange,提问作者Princeton Ebanks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 05:55:34