在 sinon 模拟上发出函数

Emit function on sinon mock

我有一个函数需要使用 sinon 进行测试。它有两个参数并且可以引发不同的事件。我正在尝试模拟为模拟成功的 SFTP 连接所做的 'ready' 事件

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() 似乎从来没有 运行.

我们需要的不是尝试 return 我需要的东西来替换被调用的函数并在函数内做一个简单的 .emit 调用。

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