我在测试期间如何为node.js内置的fs模块进行存根化?

7 浏览
0 Comments

我在测试期间如何为node.js内置的fs模块进行存根化?

我想要模拟node.js的内置模块,比如fs,这样就不会真正进行系统级的文件调用。我唯一能想到的办法就是将fs和其他所有内置模块作为参数传递给我的所有函数,以避免使用真正的fs。这似乎有点愚蠢,而且函数签名会变得冗长,充斥着内置模块的参数。

var fs = require('fs');
function findFile(path, callback) {
  _findFile(fs, path, callback);
}
function _findFile(fs, path, callback) {
  fs.readdir(path, function(err, files) {
     //做一些操作。
  });
}

然后在测试过程中:

var stubFs = {
  readdir: function(path, callback) {
     callback(null, []);
  }
};
_findFile.(stubFs, testThing, testCallback);

肯定有比这更好的方法,对吧?

0