Допустим, у вас есть метод myMethod в модуле myModule, который выглядит следующим образом:
function myMethod() {
return 5;
}
module.exports.myMethod = myMethod;
Теперь, если я хочу заглушить этот метод, чтобы вернуть 2 вместо 5 с Sinon, я бы написал
const myModule = require('path/myModule');
sinon.stub(myModule, 'myMethod').returns(2);
Теперь в том месте, где вы на самом деле вызываете метод, вы случайно импортируете такой метод с уничтожением объекта
const { myMethod } = require('path/myModule');
console.log(myMethod()); // Will print 5
Если вы это сделаете, myMethod на самом деле не заглушается и не выигрываетВместо этого верните 2, но 5.
Если вместо этого вам снова потребуется модуль и использовать функцию из требуемого модуля, он будет работать
const myModule= require('path/myModule');
console.log(myModule.myMethod()); // Will print 2
Есть ли кто-нибудь, у кого есть решение этой проблемы?кроме простого изменения способа импорта моих функций?