2015-09-26 93 views
2

我正在尝试在我的node.js项目上执行jasmine-node单元测试。我需要获得一组文件路径,然后将该数组传递给单元测试。但是,由于这是异步的,我必须使用回调,并且我不能返回数组。我无法弄清楚如何将检索到的数组发送到单元测试。异步回调返回值(在单元测试中)

这里是我的代码:

module.exports = { 
    results: [], 
    walk: function(){ 
     var nodeDir = require("node-dir"); 
     nodeDir.files(__dirname + "/public/img", function(err, files){ 
      if (err){ throw err; }  
      getData(files); 
     }); 
    }, 
    getData: function(files){ 
     console.log(files); 
     results = files; 
    } 
}; 

,这里是我的单元测试:

var gallery = require("./server"); 

describe("Gallery", function() { 
    var picArray = [ 
     "/gallery/public/img/dir1/lizard-248705_1280.jpg", 
     "/gallery/public/img/dir1/loch-ness-151851_1280.png", 
     "/gallery/public/img/dir1/sand-lizard-63185_1280.jpg", 
     "/gallery/public/img/dir1/stegosaurus-24752_1280.png"]; 

    it("walks the images directory", function(){ 
     expect(gallery.walk()).toEqual(picArray); 
    }); 
}); 

回答

0

这样你就可以在阵列送回去。没有测试过,但它应该可以工作。

module.exports = { 
     results: [], 
     walk: function(callback){ //Added callback argument 
     var nodeDir = require("node-dir"); 
     nodeDir.files(__dirname + "/public/img", function(err, files){ 
      if (err){ throw err; }  
      callback(files); 
     }); 
     } 
}; 

单元测试:

var gallery = require("./server"); 

describe("Gallery", function() { 
    var picArray = [ 
     "/gallery/public/img/dir1/lizard-248705_1280.jpg", 
     "/gallery/public/img/dir1/loch-ness-151851_1280.png", 
     "/gallery/public/img/dir1/sand-lizard-63185_1280.jpg", 
     "/gallery/public/img/dir1/stegosaurus-24752_1280.png"]; 

    it("walks the images directory", function(done){ 
     gallery.walk(function(files){ //Pass callback to walk 
      //Your code here 
      done(); //ends the async test 
     }); 
    }); 
}); 
+0

谢谢!这工作。尽管我起初有点麻烦,因为'gallery.walk()'没有按照与picArray相同的顺序发回数组,所以我仍然遇到错误。我不得不传入'files.sort()'。 –