如何在后续调用sinon.js存根

时间:2016-09-20 13:58:35

标签: javascript mocha sinon

我正在尝试编写一个测试,其中我需要一个具有不同功能的函数,这取决于它是第一次被调用还是第二次被调用。到目前为止,我已经尝试过:

  this.dispatcherStub = sinon.stub(alt.dispatcher, 'dispatch');

  this.dispatcherStub.onFirstCall().returns((dataArgs) => {
    // Some assertion on the data
  });

  this.dispatcherStub.onSecondCall().returns((dataArgs) => {
    // Another assertion on the data
    done();
  });

请注意,我需要它们是不同的函数,而不仅仅是不同的返回不同的值,因为我需要在第二个函数中调用mocha的done(),因为它是异步调用的。

1 个答案:

答案 0 :(得分:1)

您需要执行返回的函数:

this.dispatcherStub = sinon.stub(alt.dispatcher, 'dispatch');

  this.dispatcherStub.onFirstCall().returns(
      (function () {}();
  });

  this.dispatcherStub.onSecondCall().returns((dataArgs) => {  
    (function () {
        done();
    }();
  });

您还可以使用(() => return 4)();

将箭头功能转换为IIFE