在异步并行

时间:2015-09-08 08:06:53

标签: 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...
})

我正在通过对存档和映射函数进行存根来测试句柄错误功能,以便其中一个返回错误:

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

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

我有另一个测试,其中存档函数返回错误而不是map函数,并且此测试通过而不会调用任何存根方法而不是存根。

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

1 个答案:

答案 0 :(得分:2)

您希望使用yieldsAsync代替yields,否则会过早产生错误(在所有并行“任务”开始之前)并且async.map()停止任何进一步处理(使用yields基本上把它变成了同步操作。)