У меня есть этот сценарий, и я пытаюсь написать для него unitTest
const processAllItems = (listOfItems) => {
//some processing and then
let itemListProcessed = [];
let itemProcessed;
listOfItems.forEach(item => {
itemProcessed = processItem(item)
itemListProcessed.push(itemProcessed);
})
return itemListProcessed;
}
const processItem = (item) => {
//Do some processing and then
let validItem = isItemValid(item);
if(validItem) {
// do some processing
}
else {
//do something else
}
}
const isItemValid = (item) => {
if(item) return true
else return false
}
}
Я пишу для него модульные тесты. Я хочу проверить метод высокого уровня (processAllItems ()). Внутри этого метода вызывается processItem (), а внутри метода processItem () - другой метод isItemValid (). Как я могу заглушить метод isValidItem (), чтобы всегда возвращать true, не заглушая метод processItem (). Я попробовал это, но это не сработало:
sandbox.stub(mainService, 'isItemValid').callsFake(() => {
console.log("stub is triggered")
return true;
});
Заранее спасибо, любая помощь будет оценена. Я использую mocha / sinon
, и мой код выглядит так:
// Inside this file are all three methods described on the post
const mainService = require('pathToFile');
describe.only('Check processAllItems', async function() {
let sandbox;
before(async function() {
sandbox = sinon.createSandbox();
})
after(async function () {
sandbox.restore();
})
it.only('should process sale', async function() {
sandbox.stub(mainService, 'isValidItem').callsFake(() => {
return false;
});
let resutls = await mainService.processAllItems(record);
})
})