【问题标题】:Emit function on sinon mocksinon mock上的发射功能
【发布时间】:2016-11-28 20:59:38
【问题描述】:

我有一个需要使用 sinon 测试的功能。它需要两个参数,并且可以引发不同的事件。我正在尝试模拟为模拟成功的 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() 似乎永远不会运行。

【问题讨论】:

    标签: javascript unit-testing jasmine sinon


    【解决方案1】:

    我们需要的是而不是试图返回我需要的东西来替换被调用的函数并在函数内执行一个简单的.emit 调用。

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

    【讨论】:

      猜你喜欢
      • 2015-08-21
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      • 2020-10-21
      • 1970-01-01
      • 2015-11-26
      • 2016-10-08
      相关资源
      最近更新 更多