Я новичок в Jest и тестировании кода в целом. Я хотел бы протестировать функцию, которая извлекает данные из базы данных mongodb, используя mongoose. Когда я запускаю тест, все вызовы БД внутри функции, которую я тестирую, возвращают ноль. Каков рекомендуемый способ тестирования функций, которые должны извлекать данные из базы данных?
Дайте мне знать, если вам нужны примеры кода или дополнительная информация.
Обновление:
Вот мой код:
code.js
...
function buildText(listing, messageRule, reservation, isReview = false, isLastMinuteMessage = false) {
return new Promise(async function(resolve) {
const name = reservation.name;
try {
message = await Message.findOne({
listingID: listing._id,
messageRuleID: messageRule._id,
reservationID: reservation._id,
message: {$exists: true}
});
} catch (error) {
console.error(error);
}
if (message) {
text = message.message;
} else {
text = messageRule.message;
if (isLastMinuteMessage) {
text = messageRule.lastMinuteMessage;
}
}
text = text.replace(/{{Guest Name}}/g, name);
resolve(text);
});
}
...
code.test.js
const Code = require("./code");
describe("funcs", () => {
it("buildText", async () => {
let listing = {
_id: "1324",
pricingEnabled: true,
listingFound: true,
hideListing: null
};
let messageRule = {
_id: "3452345",
minNights: 1,
reviewEnabled: false,
disableMessageAfterReview: false,
message: 'test',
lastMinuteMessage: 'test2'
};
let reservation = {
_id: "63452345",
hasLeftReview: true,
hasIssues: false
};
let isReview = false;
let isLastMinuteMessage = false;
let response = await Code.buildText(listing, messageRule, reservation, isReview, isLastMinuteMessage);
expect(response).toMatchSnapshot();
});
});
У меня проблема со строкой message = await Message.findOne({
в моем файле кода. Он всегда возвращает ноль, но я должен быть в состоянии сказать, чтобы он возвращал истину или ложь. Как я могу это сделать?