在sinon mock上发出函数

时间:2016-11-28 20:59:39

标签: javascript unit-testing jasmine sinon

我有一个需要使用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()似乎永远无法运行。

1 个答案:

答案 0 :(得分:1)

所需要的不是试图返回我需要的东西来替换被调用的函数,而是在函数内进行简单的.emit调用。

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