假设我有一个helper方法helper.someFn
和一个service方法servMethod
,它多次调用helper.someFn
。现在,在测试servMethod
时,我截取了helper.someFn
。
// helper.js
exports.someFn = (param) => {
return param + 1;
}
// service.spec.js
describe('Spec', () => {
it('first test', (done) => {
var someFnStub = sinon.stub(helper, 'someFn', (param) => {
return 0;
});
// do servMethod call which calls someFn
expect(someFnStub.firstCall.calledWith(5)).to.be.true;
helper.someFn.restore();
done();
});
});
假设
servMethod
调用了helper.someFn
5次,每次使用不同的参数。在内部测试中,我可以使用helper.someFn
访问someFnStub.firstCall
的第一个调用。我可以用这种方法打到第三个电话。如何访问下一个呼叫,如第4个或第5个呼叫? 最佳答案
stub.onFirstCall()
是stub.onCall(0)
的缩写,stub.onSecondCall()
是stub.onCall(1)
等的缩写,因此如果要测试第四个调用:
expect(someFnStub.onCall(3).calledWith(5)).to.be.true;
在此记录:http://sinonjs.org/releases/v3.2.1/stubs/#stub-onCall