我有一个非常简单的 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() {
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()
不同你 stub 了导出的内容。最好的办法就是改变trysinon
到类,或称为导出bar()
在foo()
如下。
function bar() { return 2; }
module.exports.bar = bar;
function foo() {
module.exports.bar();
}
module.exports.foo = foo;
然后你可以 stub bar()
与 sinon.stub(trysinon, 'bar').returns(2)
希望这可以帮助你。
关于javascript - Sinon 不适用于导出功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44199690/