我有一个需要使用sinon测试的功能。它需要两个参数,并且可以引发不同的事件。我试图模拟准备好的' evet用于模拟成功的SFTP连接
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
功能。
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()
似乎永远无法运行。
答案 0 :(得分:1)
所需要的不是试图返回我需要的东西来替换被调用的函数,而是在函数内进行简单的.emit
调用。
configureSftpStub = sinon.stub(clientObject, 'connect', function() {
this.emit('ready');
});