У меня есть класс с асинхронным конструктором c, который называется init (). Я пытаюсь создать для него тест, но у меня есть некоторые проблемы. Код работает нормально, но тесты выдают следующую ошибку:
Тайм-аут - обратный вызов Asyn c не был вызван в течение времени ожидания 5000 мс, указанного в jest.setTimeout.Timeout - обратный вызов Asyn c был не вызывается в течение времени ожидания 5000 мс, указанного в jest.setTimeout.Error:
Это класс:
const { Settings } = require("../models/settings");
const moment = require("moment");
class Config {
async init() {
let settings = await Settings.findOne(); // This looks like the line where it gets stuck
if (!settings) settings = await createDefaultConfig();
this.lastBookableDay = settings.lastBookableDay;
this.slotDuration = settings.slotDuration;
this.interval = settings.interval;
this.expireOffset = settings.expireOffset;
this.cancelationNotice = settings.cancelationNotice;
this.week = settings.week;
}
}
async function createDefaultConfig() {
const settings = await Settings.find();
let last = moment().format("YYYY-MM-DD");
last = moment(last).add(10, "day").unix();
if (settings.length < 1) {
const newSettings = new Settings({
lastBookableDay: last,
slotDuration: 50,
interval: 10,
expireOffset: 60,
cancelationNotice: 24,
week: [...new Array(7)].map(() =>
({ startHours: 10, startMinutes: 0, slotNumber: 5, off: false }))
});
await newSettings.save();
}
}
module.exports = Config;
У меня есть другие тесты, которые обращаются к БД без проблем.
Это код неудачного теста (для простоты нет очистки базы данных):
const Settings = require("./settings.js");
describe("Settings class", () => {
it("should init settings instance", async () => {
const settings = new Settings();
await settings.init();
console.log(settings)
expect(settings.slotDuration).toBe(50);
})
});
Может кто-нибудь указать мне, что я делаю неправильно, пожалуйста? Спасибо.