2016-11-28 43 views
0

我有一個函數需要用sinon來測試。它需要兩個參數,並且可以提出不同的事件。我試圖做模擬來模擬一個成功的SFTP連接在sinon mock上發射函數

function configureSFTPConnection(conn, connectionSettings) { 
    'use strict'; 

    return new Promise(function(resolve, reject) { 
     conn.on('ready', function() { 
      resolve(conn); 
     }).on('error', function(err) { 
      reject(err); 
     }).connect(connectionSettings); 
    }); 
} 

我可以模擬外部connect功能「就緒」 EVET。

configureSftpStub = sinon.stub(clientObject, 'connect'); 

如何強制ready回調執行,完成承諾?

這就是我想:

clientObject = new client();   
configureSftpStub = sinon.stub(clientObject, 'connect'); 
configureSftpStub.onCall(0).returns(function() { 
    console.log('trying to do something'); 
    resolve(); 
}); 

.onCall()似乎永遠不會運行。

回答

1

需要什麼而不是試圖返回我需要的東西來替換被調用的函數,並在函數內執行一個簡單的.emit調用。

configureSftpStub = sinon.stub(clientObject, 'connect', function() { 
    this.emit('ready'); 
});