使用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. } }
你可以参考摩卡官方网站上的例子。
所以,感谢你的回答和一些研究,我设法做到了我想要的。
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是必要的,以避免错误(我总是等于数组的最大大小,而不是递增)