我想存根 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) {
//Do something.
});
}
然后在测试过程中:
var stubFs = {
readdir: function(path, callback) {
callback(null, []);
}
};
_findFile.(stubFs, testThing, testCallback);
还有比这更好的方法吗?
我喜欢用rewire https://github.com/jhnns/rewire用于删除 require(...) 语句
待测模块
模块a.js
var fs = require('fs')
function findFile(path, callback) {
fs.readdir(path, function(err, files) {
//Do something.
})
}
测试代码
模块-a-test.js
var rewire = require('rewire')
var moduleA = rewire('./moduleA')
// stub out fs
var fsStub = {
readdir: function(path, callback) {
console.log('fs.readdir stub called')
callback(null, [])
}
}
moduleA.__set__('fs', fsStub)
// call moduleA which now has a fs stubbed out
moduleA()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)