2016-11-28 8 views
0

私はsinonを使ってテストする必要がある関数を持っています。 2つの引数をとり、発生可能なさまざまなイベントがあります。私は外部connect機能をシミュレートすることができます成功したSFTP接続サイモンモックでEmit関数を使用

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

をシミュレートするために作られた「準備」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'); 
}); 
関連する問題