假设我有一个辅助方法helper.someFn
和服务方法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个电话等下一个电话?
答案 0 :(得分:3)
stub.onFirstCall()
是stub.onCall(0)
的缩写,stub.onSecondCall()
是stub.onCall(1)
的缩写,等等,所以如果你想测试第四个电话:
expect(someFnStub.onCall(3).calledWith(5)).to.be.true;
答案 1 :(得分:0)
源代码显示Failed to deploy artifacts: Could not transfer artifact a.b:deploy-to-nexus:pom:1.0 from/to ..... (http://.....-releases): Failed to transfer file http://..../deploy-to-nexus/1.0/deploy-to-nexus-1.0.pom with status code 400
,firstCall
和secondCall
实际上只是thirdCall
上的糖。
getCall
因此,要在第四次通话中断言,您将使用// lib/sinon/spy.js
// ...
this.firstCall = this.getCall(0);
this.secondCall = this.getCall(1);
this.thirdCall = this.getCall(2);
this.lastCall = this.getCall(this.callCount - 1);
// ...
答案 2 :(得分:0)
getCall(-nth)
其中 nth
可以是负值。
这允许获取从数组末尾索引的调用:
spy.getCall(-1) // returns the last call
spy.getCall(-2) // the second to last call.
// ...