Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/438.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将mochasdone回调函数传递给另一个助手函数_Javascript_Callback_Promise_Mocha.js - Fatal编程技术网

Javascript 如何将mochasdone回调函数传递给另一个助手函数

Javascript 如何将mochasdone回调函数传递给另一个助手函数,javascript,callback,promise,mocha.js,Javascript,Callback,Promise,Mocha.js,我有一段代码,我将在mocha中的then语句中多次使用它,所以我将它转换为一个函数。但是,我还需要在该函数中调用done(),它超出了范围,导致错误未捕获引用错误:未定义done。下面是一段代码片段: var collectionChecker = function(results) { expect(Array.isArray(results), 'Did not return collection'); expect(results.length === numAttr, 'Ret

我有一段代码,我将在mocha中的then语句中多次使用它,所以我将它转换为一个函数。但是,我还需要在该函数中调用
done()
,它超出了范围,导致错误未捕获引用错误:未定义done。下面是一段代码片段:

var collectionChecker = function(results) {
  expect(Array.isArray(results), 'Did not return collection');
  expect(results.length === numAttr, 'Returned wrong number of models');
  done();
};

test('returns a collection with correct number of models', function(done) {
  attrs.getAttributeTemplates().then(collectionChecker);
});
如何将
done()
传递给我的函数


我找到了一个解决办法,将另一个链接起来。然后在那里调用done,但这似乎是一个丑陋的方法。

你想得太多了-摩卡支持承诺,你可以返回一个承诺,如果承诺兑现,测试将通过(如果期望抛出,测试将失败):


非常感谢。这正是我想要的。在另一次测试中,我试图做一些类似的事情,但结果并没有达到预期效果。我试图返回一系列的thens,它总是评估为真,尽管当时内心深处的期望是成功还是失败。关于如何处理这种情况有什么建议吗?@novacog如果你有一个具体的案例,请提出一个新的问题,我保证会看一看。
var collectionChecker = function(results) {
  expect(Array.isArray(results), 'Did not return collection');
  expect(results.length === numAttr, 'Returned wrong number of models');
};

// just add a return, no `done` here or anywhere    
test('returns a collection with correct number of models', function() {
  return attrs.getAttributeTemplates().then(collectionChecker);
});