我正在尝试测试以下代码:
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 );
答案 0 :(得分:2)
您希望使用yieldsAsync
代替yields
,否则会过早产生错误(在所有并行“任务”开始之前)并且async.map()
停止任何进一步处理(使用yields
基本上把它变成了同步操作。)