我正在尝试测试以下代码:
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/