我有一个非常简单的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);
});
});而且测试失败了。怎样才能确保考试通过?
发布于 2017-05-26 15:04:57
因为在foo()中,您调用了bar(),这是trysinon.js的内部函数。此bar()与导出的bar()不同。最好的方法是将trysinon更改为类,或者在foo()中调用导出的bar(),如下所示。
function bar() { return 2; }
module.exports.bar = bar;
function foo() {
module.exports.bar();
}
module.exports.foo = foo;然后,您可以使用bar()和sinon.stub(trysinon, 'bar').returns(2)进行存根。
希望这能帮到你。
发布于 2021-07-29 09:30:59
我使用箭头函数代替,它可以工作。
export const foo = () => {
bar();
}
export const bar = () => {
return 2;
}https://stackoverflow.com/questions/44199690
复制相似问题