Здравствуйте, я новичок в использовании mocha / sinon, и у меня возникла эта проблема
Я тестирую этот метод
export async function onConfigEvent(event: configEvent, otherConfig: otherConfig) {
var myConfig = event.config as Config;
const info = await fetchInfo(otherConfig.detailsPath, myConfig.Id);
if (!isDefined(info)) {
console.log('info is undefined.');
return;
}
}
этот метод на самом деле намного больше, с множеством операторов if поэтому я хочу проверить каждый путь этого. у меня проблема с вызовом fetchInfo()
. эта функция вызывает функцию, которая создает URL-адрес и т. д., а затем вызывает другую функцию, которая выполняет фактический вызов с обещанием. что мне нужно, это подделать fetchInfo
и заставить его вернуть то, что я хочу для этого экземпляра, я хочу, чтобы он return undefined
, поэтому он входит в if, а в других случаях я хочу, чтобы он возвращал фальшивую модель, как будто она удалось. но я понятия не имею, как это сделать, и я долго искал и начал пытаться с sinon.stub
, но как бы мне реализовать это здесь?
так выглядит мой тест
it('should log info undefined', () => {
let event: configEvent = {
type: events.Config,
config: { ["Id"]: 361 }
}
let fetch = sinon.stub(fetchResource);
let otherConfig = getOtherConfig();
let spy = sinon.spy(console, 'log');
onConfigEvent(event, otherConfig)
assert(spy.calledWith('info is undefined.'));
spy.restore();
});
где fetchResource
- функция, вызываемая fetchInfo
, но это ничего не делает