如何使用sinon.stub()只执行某个调用

How to only stub on a certain call with sinon.stub()

本文关键字:执行 调用 何使用 sinon stub      更新时间:2023-09-26

我想存根doSomething以回调并返回错误。但是,我只希望它在第一次响应时回调一个错误。我想在第一次调用后恢复存根

为了监听第一个呼叫,我可以这样做:

var stub = sinon.stub(someOjbect, "doSomething");
stub.onCall(0).callsArgWith(5, mockError);

如何在第一次调用后恢复存根?例如

stub.onCall(1).restore();

上面的显然不起作用,只是想举一个例子来说明我想要实现

我认为这只会截断第一个调用,但我不确定它是否适用于您的用例:

var stub = sinon.stub(someObject, 'doSomething', function(args) {
  someObject.doSomething.restore();
  return mockData;
});