Ранее я думал о том, чтобы предоставить альтернативу 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
, он напечатает « test content », даже если он включает code.js .