【发布时间】:2018-12-08 18:59:58
【问题描述】:
我有一个猫鼬模型:
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 和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);
});
});
});
});
});
现在,当我运行测试时,我收到以下两个警告:
(node:2199) UnhandledPromiseRejectionWarning: 未处理的承诺 拒绝(拒绝 id:1):ReferenceError:未定义完成 (节点:2199)[DEP0018] DeprecationWarning:未处理的承诺拒绝 已弃用。将来,未处理的承诺拒绝 将使用非零退出代码终止 Node.js 进程。
然后单元测试通过,然后我得到这个错误信息:
Jest 在测试运行完成后一秒没有退出。
这通常意味着存在未执行的异步操作 在您的测试中停止。考虑运行 Jest
--detectOpenHandles解决此问题。
当我得到正确的结果后如何终止测试?
【问题讨论】:
标签: javascript node.js mongoose jestjs mockgoose