У меня есть модель мангуста:
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);
});
});
});
});
});
Теперь, когда я запускаю свои тесты, я получаю два предупреждения:
(узел: 2199) UnhandledPromiseRejectionWarning: необработанное обещание
отклонение (идентификатор отклонения: 1): ReferenceError: done не определено
(узел: 2199) [DEP0018] Предупреждение об устаревании: отклонение необработанного обещания
устарели. В будущем обещают отклонения, которые не обрабатываются
завершит процесс Node.js с ненулевым кодом выхода.
Затем модульный тест проходит, и тогда я получаю это сообщение об ошибке:
Jest не вышел из системы через секунду после завершения пробного запуска.
Обычно это означает, что существуют асинхронные операции, которые не были
остановился на ваших тестах. Рассмотрите возможность запуска Jest с
--detectOpenHandles
для устранения этой проблемы.
Как мне завершить тест, как только я получу правильный результат?