笑话和猫鼬-笑话已检测到打开的句柄 [英] jest and mongoose - jest has detected opened handles

查看:257
本文介绍了笑话和猫鼬-笑话已检测到打开的句柄的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

因此,我正在使用jest来测试我的node.js应用程序,并且测试完成得很好,但是我从玩笑中得到了有关打开句柄的消息.有什么见识吗?

So I'm using jest to test my node.js application and the tests finish fine but I'm getting a message from jest about open handles. Any insights?

开玩笑--detectOpenHandles

jest --detectOpenHandles

PASS src/libs/user/测试/user_model_test.js PASS src/测试/app_test.js通过 src/libs/user/测试/user_service_test.js

PASS src/libs/user/tests/user_model_test.js PASS src/tests/app_test.js PASS src/libs/user/tests/user_service_test.js

测试套件:3个通过,总共3个测试:14个通过,总共14个 快照:0个总时间:7.209s运行所有测试套件.

Test Suites: 3 passed, 3 total Tests: 14 passed, 14 total Snapshots: 0 total Time: 7.209s Ran all test suites.

Jest已检测到以下四个可能保持打开状态的句柄 开玩笑地说:

Jest has detected the following 4 open handles potentially keeping Jest from exiting:

●承诺

  2 | // we use a test database for testing
  3 | var mongoDB = 'mongodb://localhost/my_db_conn';
> 4 | mongoose.connect(mongoDB);
    |          ^
  5 | const User = require('../user_model');
  6 |
  7 | describe("User model test", () => {

  at NativeConnection.Object.<anonymous>.Connection.openUri (node_modules/mongoose/lib/connection.js:424:19)
  at Mongoose.Object.<anonymous>.Mongoose.connect (node_modules/mongoose/lib/index.js:208:15)
  at Object.<anonymous> (src/libs/user/__tests__/user_model_test.js:4:10)

●承诺

   8 | });
   9 |
> 10 | module.exports = mongoose.model("User", UserSchema);
     |                           ^

  at Function.init (node_modules/mongoose/lib/model.js:962:16)
  at Mongoose.Object.<anonymous>.Mongoose.model (node_modules/mongoose/lib/index.js:392:11)
  at Object.<anonymous> (src/libs/user/user_model.js:10:27)
  at Object.<anonymous> (src/libs/user/__tests__/user_model_test.js:5:14)

●承诺

   8 | });
   9 |
> 10 | module.exports = mongoose.model("User", UserSchema);
     |                           ^

  at Function.init (node_modules/mongoose/lib/model.js:962:16)
  at Mongoose.Object.<anonymous>.Mongoose.model (node_modules/mongoose/lib/index.js:392:11)
  at Object.<anonymous> (src/libs/user/user_model.js:10:27)
  at Object.<anonymous> (src/libs/user/index.js:1:41)

●承诺

  3 | var mongoose = require('mongoose');
  4 | var mongoDB = 'mongodb://localhost/my_db_conn';
> 5 | mongoose.connect(mongoDB);
    |          ^
  6 |
  7 | describe('App test', () => {
  8 |     it('has a module', () => {

  at NativeConnection.Object.<anonymous>.Connection.openUri (node_modules/mongoose/lib/connection.js:424:19)
  at Mongoose.Object.<anonymous>.Mongoose.connect (node_modules/mongoose/lib/index.js:208:15)
  at Object.<anonymous> (src/__tests__/app_test.js:5:10)

推荐答案

model.init函数相关,该函数返回promise.快速解决方法是在创建模型时通过skipInit标志:

It's related to model.init function which returns promise. Quick fix will be to pass skipInit flag while creating the model like this:

const User = mongoose.model("users", userSchema, "users", true)

skipInit是此函数中的第四个参数

skipInit is the fourth parameter in this function

但是在这种情况下,它不会为您的模型初始化索引,因此最好根据process.env.NODE_ENV

But in this case it will not initialize indexes for your model, so it's better to set this flag according to the process.env.NODE_ENV

const skipInit = process.env.NODE_ENV === "test" const User = mongoose.model("users", userSchema, "users", skipInit)

const skipInit = process.env.NODE_ENV === "test" const User = mongoose.model("users", userSchema, "users", skipInit)

这篇关于笑话和猫鼬-笑话已检测到打开的句柄的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆