Anonymous
Sinon Snub заменить функцию
Сообщение
Anonymous » 01 сен 2025, 22:08
Можно ли заменить или загрязнять функцию экспорта.
Код: Выделить всё
function myOtherFunction() {
return true;
}
function myFunction() {
return myOtherFunction();
}
exports = {
myOtherFunction: myOtherFunction,
myFunction: myFunction
}
< /code>
index.test.js:
const sinon = require('sinon');
const assert = require('assert');
describe('mystuff', function() {
before{
var myStuff = proxyquire('path/to/mystuff), {
...
}
}
describe('my test', function() {
beforeEach(function() {
sinon.stub(myStuff, 'myOtherFunction');
});
it('should do something...', function() {
myStuff.myOtherFunction.returns(false);
assert.equal(myStuff.myOtherFunction(), false);
assert.equal(myStuff.myFunction(), false);
});
});
});
< /code>
Когда я называю заглушенной функцией «myotherfunction» непосредственно, она возвращает загрязненное значение false, но когда я называю «myfunction», которая называет «myotherfunction», исходная экспортированная функция называется. «мифункция». Я думал, что смогу манипулировать им напрямую: < /p>
myStuff.myOtherFunction = function() { return false; }
Есть идеи?
Подробнее здесь:
https://stackoverflow.com/questions/797 ... e-function
1756753728
Anonymous
Можно ли заменить или загрязнять функцию экспорта.[code]function myOtherFunction() { return true; } function myFunction() { return myOtherFunction(); } exports = { myOtherFunction: myOtherFunction, myFunction: myFunction } < /code> index.test.js: const sinon = require('sinon'); const assert = require('assert'); describe('mystuff', function() { before{ var myStuff = proxyquire('path/to/mystuff), { ... } } describe('my test', function() { beforeEach(function() { sinon.stub(myStuff, 'myOtherFunction'); }); it('should do something...', function() { myStuff.myOtherFunction.returns(false); assert.equal(myStuff.myOtherFunction(), false); assert.equal(myStuff.myFunction(), false); }); }); }); < /code> Когда я называю заглушенной функцией «myotherfunction» непосредственно, она возвращает загрязненное значение false, но когда я называю «myfunction», которая называет «myotherfunction», исходная экспортированная функция называется. «мифункция». Я думал, что смогу манипулировать им напрямую: < /p> myStuff.myOtherFunction = function() { return false; } [/code] Есть идеи? Подробнее здесь: [url]https://stackoverflow.com/questions/79752841/sinon-snub-replace-function[/url]