Javascript Sinon不适用于导出函数
我有一个非常简单的JS库(称为trysinon.JS),如下所示:Javascript Sinon不适用于导出函数,javascript,mocha.js,sinon,Javascript,Mocha.js,Sinon,我有一个非常简单的JS库(称为trysinon.JS),如下所示: export function foo() { bar(); } export function bar() { return 2; } 我有下面的测试 import expect from 'expect'; import sinon from 'sinon'; import * as trysinon from 'trysinon'; describe('trying sinon', function() {
export function foo() {
bar();
}
export function bar() {
return 2;
}
我有下面的测试
import expect from 'expect';
import sinon from 'sinon';
import * as trysinon from 'trysinon';
describe('trying sinon', function() {
beforeEach(function() {
sinon.stub(trysinon, 'bar');
});
afterEach(function() {
trysinon.bar.restore();
});
it('calls bar', function() {
trysinon.foo();
expect(trysinon.bar.called).toBe(true);
});
});
测试失败了。如何确保测试通过?因为在foo()
中,您调用了bar()
,这是trysinon.js的内部函数。此bar()
与导出的bar()
不同。最好的方法是将trysinon
更改为class,或者在foo()
中调用exportedbar()
,如下所示
function bar() { return 2; }
module.exports.bar = bar;
function foo() {
module.exports.bar();
}
module.exports.foo = foo;
然后您可以使用sinon.stub(trysinon,'bar')存根bar()
。返回(2)
希望这能对您有所帮助。因为在foo()
中,您调用了bar()
,这是trysinon.js的内部函数。此bar()
与导出的bar()
不同。最好的方法是将trysinon
更改为class,或者在foo()
中调用exportedbar()
,如下所示
function bar() { return 2; }
module.exports.bar = bar;
function foo() {
module.exports.bar();
}
module.exports.foo = foo;
然后您可以使用sinon.stub(trysinon,'bar')存根bar()
。返回(2)
希望这能对您有所帮助。接受答案的可能副本对我不起作用。请参阅DreamSonic的链接答案(不是接受的答案)接受答案的可能副本对我不起作用。请参阅DreamSonic的链接答案(不是接受的答案)