Mon application de nœud dispose d'une suite de tests assez importante qui dépend du module ShouldJS. Le problème est que la bibliothèque bloque les propriétés .should
sur les objets, mais ma suite de tests doit générer un serveur qui doit être simulable (ie exécuter le même processus que ma suite de tests) et générer dynamiquement des requêtes ElasticSearch, qui doivent être définies .should
propriété sur les objets.Nœud non requis ShouldJS
J'ai essayé de ne pas requérir ShouldJS en utilisant une approche described here. Mais cela n'a pas aidé - voir l'exemple de script ci-dessous. Y a-t-il une solution de contournement ou une approche alternative?
Exemple:
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);
qui donne ceci:
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: {} } }
Aucun des .should
propriétés sont attribuées se.