2016-09-20 71 views
1

我正在嘗試編寫一個測試,其中需要使用不同函數存根的函數,具體取決於它是第一次被調用還是第二次。到目前爲止,我已經試過:如何在隨後調用sinon.js存根時使用不同函數存根

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(); 
    }); 

請注意,我需要他們不同的功能,而不僅僅是不同的返回不同的值,因爲我需要摩卡的()完成要在第二個函數中調用,因爲它正在異步調用。

回答

1

您需要執行返回的功能:

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

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

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

您還可以通過使用(() => return 4)();

轉向箭頭功能於IIFE