jest mockgoose - jest 在测试运行完成后一秒没有退出

2023-11-23

我有一个猫鼬模型:

var mongoose = require("mongoose");

var transactionSchema = mongoose.Schema({
  category: { type: String, required: [true, "Category is required."] },
  amount: Number,
  comment: String,
  tags: Array,
  currency: String
});

var Transaction = mongoose.model("Transaction", transactionSchema);

module.exports = Transaction;

和一个简单的单元测试使用mockgoose and jest:

var { Mockgoose } = require("mockgoose");
var mongoose = require("mongoose");
var Transaction = require("./transaction");

var mockgoose = new Mockgoose(mongoose);

describe("transaction", function() {
  afterEach(function() {
    mockgoose.helper.reset().then(() => {
      done();
    });
  });

  it("category is required", function() {
    mockgoose.prepareStorage().then(() => {
      mongoose.connect("mongodb://foobar/baz");
      mongoose.connection.on("connected", () => {
        var mockTransaction = new Transaction({
          category: "Transportation",
          amount: 25,
          comment: "Gas money, Petrol.",
          tags: ["Gas", "Car", "Transport"],
          currency: "EUR"
        });
        mockTransaction.save(function(err, savedTransaction) {
          if (err) return console.error(err);
          expect(savedTransaction).toEqual(mockTransaction);
        });
      });
    });
  });
});

现在,当我运行测试时,我收到这两个警告:

(节点:2199)UnhandledPromiseRejectionWarning:未处理的承诺 拒绝(拒绝 ID:1):ReferenceError:未定义完成 (节点:2199)[DEP0018] DeprecationWarning:未处理的承诺拒绝 已弃用。以后承诺拒绝不处理的 将以非零退出代码终止 Node.js 进程。

然后单元测试通过,然后我收到以下错误消息:

测试运行完成后,Jest 一秒钟都没有退出。

这通常意味着存在未完成的异步操作 在你的测试中停止了。考虑运行 Jest--detectOpenHandles来解决此问题。

得到正确结果后如何终止测试?


该错误的含义正是它所说的,done未定义但已使用。如果使用承诺,则不需要它。 Jest 支持 Promise,Promise 应该从块返回以便正确处理:

afterEach(() => mockgoose.helper.reset());

如果打开句柄出现问题,如下所示这个问题, Mongoose 可以通过以下方式显式断开连接:

afterAll(() => mongoose.disconnect());
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

jest mockgoose - jest 在测试运行完成后一秒没有退出 的相关文章

随机推荐