假设我有一个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.someFn5次,每次使用不同的参数。在内部测试中,我可以使用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

07-28 09:35