我之前曾考虑过提供一种替代方案require
以在 Node.js 中提供一种依赖注入形式。
模块代码
例如,假设您在code.js中有以下语句: fs = require('fs');
console.log(fs.readFileSync('text.txt', 'utf-8'));
如果您使用 运行此代码node code.js
,那么它将打印出text.txt的内容。
喷油器代码
但是,假设您有一个想要抽象出文件系统的测试模块。
您的测试文件test.js可能如下所示:
var origRequire = global.require;
global.require = dependencyLookup;
require('./code.js');
function dependencyLookup (file) {
switch (file) {
case 'fs': return { readFileSync: function () { return "test contents"; } };
default: return origRequire(file);
}
}
如果现在运行node test.js
,它会打印出“测试内容” ,即使它包含code.js。