使用Mocha循环callback返回的数组

我试图达到这样的事情:

describe("TEST",function() { Offer.find({},{_id:1, title:1}).exec(function(error, offers) { for (var i = 0; i < offers.length; i++) { it("Ask transaction : " + offers[i].title, function(done) { // do something with offers[i]; } } ... 

但摩卡甚至没有在文件中检测到一个testing。 为什么?

每个testing用例都以it("", function(){ /* write test code here */ } )代码块开头。

如果您正在执行像插入数据那样的testing设置,那么您可以使用before函数来执行这些操作。

例:

 describe("TEST",function() { before(function() { // runs before all tests in this block }); it("should blah", function(done) { // Your test case starts here. } } 

你可以参考摩卡官方网站上的例子。

看到:
https://mochajs.org/

所以,感谢你的回答和一些研究,我设法做到了我想要的。

 describe("TRANSACTIONS TESTS",function() { var offers; before(function(done) { Offer.find({},{_id:1, title:1}).exec(function(error, result) { offers = result; done(); }); }); it("TEST ALL OFFERS", function(done) { for (var i = 0; i < offers.length; i++) { const tmp_i = i; server .post('/transactions') .send(data) .expect("Content-type",/json/) .expect(200) .end(function(err,res) { // DO TEST STUFF HERE if (tmp_i == offers.length - 1) { done(); } }); } }); 

常量variables是必要的,以避免错误(我总是等于数组的最大大小,而不是递增)