node.js - 第二个 sinon stub 未在异步并行中调用

标签 node.js sinon

我正在尝试测试以下代码:

var archive = function(callback){
    call to this.archive() here...
}

var map = function(callback){
    call to this.map() here...
}

async.parallel([map, archive], function(error){
    handle errors here...
})

我正在通过 stub 存档和映射函数来测试处理错误功能是否正常工作,以便其中一个函数返回错误:

var mapStub = sinon.stub(MyClass.prototype, 'map').yields("mock error",null );
var archiveStub = sinon.stub(MyClass.prototype, 'archive').yields(null,null );

我遇到的问题是 archiveStub 似乎没有被使用,因为我从该函数调用的函数中收到错误(如果调用该函数,这是预期的,因为我没有初始化变量用于此测试)。

我有另一个测试,其中存档函数返回错误而不是映射函数,并且该测试通过,似乎没有调用任何一个 stub 方法而不是 stub 。

var mapStub = sinon.stub(MyClass.prototype, 'map').yields(null,null );
var archiveStub = sinon.stub(MyClass.prototype, 'archive').yields("mock error",null );

最佳答案

您希望使用 yieldsAsync 而不是 yields,否则错误会过早产生(在所有并行“任务”启动之前)并且异步。 map() 停止任何进一步的处理(使用 yields 基本上将其转变为同步操作)。

关于node.js - 第二个 sinon stub 未在异步并行中调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32452423/

相关文章:

node.js - nodejs - 测试失败但回调被调用

typescript - 如何模拟在函数内部实例化的类 - Sinon?

javascript - sinon.replace vs sinon.stub 只是为了替换返回值?

javascript - Node.js 通过快速渲染将参数传递给客户端

javascript - Firebase功能上的"Error: Client network socket disconnected before secure TLS connection was established"

javascript - 不知道如何使用 sinon 进行 qunit stub

node.js - 使用 sinon 和 mocha stub pg-promise

node.js - typeORM: "message": "Data type\"对象\"in\".. ."is not supported by\"postgres\"database."

javascript - Node.js 作为前端应用程序的后端服务器

node.js - MongoDB shell 导出整个数据库