我有一段代码,我将在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()
传递给我的函数?
我找到了一个解决方法,通过链接另一个。然后调用在那里完成,但这似乎是一种丑陋的方式。
答案 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);
});