У моего узла есть довольно большой набор тестов, который зависит от модуля ShouldJS. Проблема в том, что библиотеки блокируют присвоение объектов объектам .should
, но моему набору тестов необходимо развернуть сервер, который должен быть макетным (т.е. работать в том же процессе, что и мой тестовый набор), и динамически создавать запросы ElasticSearch, которые необходимо установить .should
собственности на объекты.Un-require node ShouldJS
Я попытался не потребовать использования ShouldJS с использованием подхода described here. Но это не помогло - см. Пример сценария ниже. Есть ли обходной путь или альтернативный подход?
Пример:
require('should');
var objBefore = {};
objBefore.should = 'should1'; // doesn't get assigned!
objBefore['should'] = 'should2'; // doesn't get assigned!
console.log('Before:', objBefore);
Object.keys(require.cache).forEach(function(path) {
if (path.indexOf('/node_modules/should/') === -1) return;
console.log('Un-requiring path', path);
delete require.cache[path];
});
var objAfter = {};
objAfter.should = 'should1'; // doesn't get assigned!
objAfter['should'] = 'should2'; // doesn't get assigned!
console.log('After:', objAfter);
// still has shouldJS stuff
console.log('objAfter.should:', objAfter.should);
, который не дает этого:
Before: {}
Un-requiring path /my/path/node_modules/should/index.js
Un-requiring path /my/path/node_modules/should/lib/should.js
...
Un-requiring path /my/path/node_modules/should/lib/ext/contain.js
Un-requiring path /my/path/node_modules/should/lib/ext/promise.js
After: {}
objAfter.should: Assertion { obj: {}, anyOne: false, negate: false, params: { actual: {} } }
Ни один из .should
свойств становятся назначены.