第二个 sinon 存根未在异步并行中调用

Second sinon stub not called in async parallel

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

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...
})

我正在测试处理错误功能是否正常工作,方法是对归档和映射函数进行存根,以便其中之一 returns 出现错误:

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

我遇到的问题是 archiveStub 似乎没有被使用,因为我从一个由该函数调用的函数中得到错误(如果调用该函数是可以预料的,因为我没有此测试的初始化变量)。

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

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

您想使用 yieldsAsync 而不是 yields,否则错误会过早产生(在所有并行 "tasks" 开始之前)并且 async.map() 停止任何进一步处理(使用 yields 基本上将其变成同步操作)。