Javascript 如何将mochasdone回调函数传递给另一个助手函数
我有一段代码,我将在mocha中的then语句中多次使用它,所以我将它转换为一个函数。但是,我还需要在该函数中调用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
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);
});