我正在尝试编写一个测试,其中我需要一个具有不同功能的函数,这取决于它是第一次被调用还是第二次被调用。到目前为止,我已经尝试过:
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(),因为它是异步调用的。
答案 0 :(得分:1)
您需要执行返回的函数:
this.dispatcherStub = sinon.stub(alt.dispatcher, 'dispatch');
this.dispatcherStub.onFirstCall().returns(
(function () {}();
});
this.dispatcherStub.onSecondCall().returns((dataArgs) => {
(function () {
done();
}();
});
您还可以使用(() => return 4)();