Это решение использует Ava (но вы должны легко адаптироваться к Mocha).Однако я больше знаком с testdouble.Если у вас нет успеха с sinon (я уверен, что у вас это получится), вот альтернативный вариант, который вы можете рассмотреть.
Итак, если у нас есть burrito.js
:
module.exports = class {
eat() {
return '?';
}
};
Иlunch.js
:
var Burrito = require('./burrito');
module.exports = () => (new Burrito()).eat();
Затем в вашем тесте:
const td = require('testdouble');
const test = require('ava');
test('swap burrito', t => {
td.replace('./burrito', class FakeBurrito {
eat() {
return '?';
}
});
const lunch = require('./lunch');
t.is(lunch(), '?'); // PASS
t.is(lunch(), '?'); // FAIL
});
Ключ должен требовать вашей зависимости (буррито), прежде чем ваш испытуемый (ваш обед) требует этого,так что у вас есть время подделать его.