Я хочу выполнить unit тест следующего упрощенного модуля:
const Logger = require('logplease');
const logger = Logger.create('utils');
const tester = {
one: () => {
logger.log('called real one()');
tester.two();
},
two: () => {
logger.log('called real two()');
},
};
module.exports = {
one: tester.one,
two: tester.two
};
Я заменяю внешнюю зависимость logplease
с помощью Proxyquire, которая работает очень хорошо. Однако мне нужно заглушить two()
, потому что я хочу unit-test one()
, в то время как устраняются побочные эффекты two()
, когда он работает в реальном коде.
it.only('stubbing functions on the "proxyquired" object under test', function(done) {
const loggerStub = {
create: () => {
return { log: (msg) => { console.log('fake logger: ', msg); } };
}
};
let tester = proxyquire('../tester', { 'logplease': loggerStub });
let stub2 = sinon.stub(
tester,
'two',
() => {
console.log('called fake stub of two()');
}
);
tester.one();
console.log('call count 2: ', stub2.callCount);
done();
});
Вывод:
fake logger: called real one()
fake logger: called real two()
call count 2: 0
Ожидаемый результат:
fake logger: called real one()
called fake stub of two()
call count 2: 1
Почему моя функция заглушки не работает?