如何将 mochas done 回调函数传递给另一个辅助函数

How can I pass mochas done callback function to another helper function

我有一段代码,我将在 mocha 的 then 语句中多次使用它,所以我将它变成了一个函数。但是,我还需要在该函数内调用 done(),它超出了范围,导致错误 Uncaught ReferenceError: done is not defined。这是一个代码片段:

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() 传递给我的函数?

我通过链接另一个 .then 并在那里调用 done 找到了解决方法,但这似乎是一种丑陋的方法。

你想多了 - mocha 支持 promise,你可以 return 一个 promise,如果它被满足,测试就会通过(如果 expects 抛出,它就会失败):

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