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

时间:2015-05-20 01:45:44

标签: javascript callback promise mocha

我有一段代码,我将在mocha的then语句中多次使用,所以我把它变成了一个函数。但是我还需要在该函数中调用done()并且它超出范围导致错误未捕获的ReferenceError:未定义完成。这是一段代码:

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

我找到了一个解决方法,通过链接另一个。然后调用在那里完成,但这似乎是一种丑陋的方式。

1 个答案:

答案 0 :(得分:1)

你过度思考它 - mocha支持承诺,你可以返回一个承诺,如果它已经完成,测试将通过(如果预期抛出将失败):

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