Когда я запускаю тест «Должен вызвать getDetails ()», происходит сбой с сообщением о том, что функция была вызвана 0 раз. Если я зарегистрирую шпиона, я увижу, что его опора 'призвана' равна ложномуЯ знаю, что он вызывается, потому что у меня есть console.log
в getDetails
, и он появляется каждый раз, когда вызывается getMultipleRecords()
. Первый тест работает просто отлично, но findAll()
- это обещание, поэтому я знаю, что это асинхронная проблема.
Я считаю, что проблема в том, что mocha не соблюдает await
. Любая обратная связь будет принята с благодарностью.
Тест:
describe('getMultipleRecords()', () => {
let next = () => {};
let req = {body:{records: [1,2,3]}};
let res = {};
// Passing
it('Should call VMBilling.findAll()', async function() {
var findAll = sinon.spy(VMBilling, 'findAll');
await recordCtrl.getMultipleRecords(req, res, next)
//console.log(find)
sinon.assert.calledOnce(findAll);
})
// Failing
it('Should call getDetails()', async function() {
var gd = sinon.spy(recordCtrl, 'getDetails');
await recordCtrl.getMultipleRecords(req, res, next)
sinon.assert.calledOnce(gd);
})
})
});
Функция, которую я тестирую
const getMultipleRecords = async (req, res, next) => {
try {
console.log('getMultipleRecords()');
let records = await VMBilling.findAll({
include: [
{
model: ErrorMessage,
},
],
where: [
{
id: req.body.records,
},
],
});
let recordsWithDetails = getDetails(records);
console.log(recordsWithDetails);
return res.status(200).json(recordsWithDetails);
} catch (error) {
next(error);
}
}