2017-01-10 3 views
0

Bon, alors voici ma question:Comment procéder pour supprimer un champ particulier dans un JSON pour un test, puis recharger le JSON dans un autre test sans mettre en cache la suppression?

it('should fail when Sns is not found within record', (done) => { 
const policy = require('../main/nacl-002-handler.js'); 
const eventData = require('./data/event.json'); 
delete eventData.Records[0].Sns; 

policy.handler(eventData, {}, (err, data) => { 
    err.should.equal(`No Sns field was found within ${eventData.Records[0]}`); 
    should.not.exist(data); 
    done(); 
}); 
}); 

Je veux supprimer des champs particuliers pour les tests ici, et cela fonctionne très bien. Mais le problème se pose lorsque j'essaie de recharger le même module lors du test suivant. Lorsque eventData est rechargé, il manque le champ que j'ai supprimé dans le test précédent. Je pense que cela est dû à la façon dont Node met en cache les modules, mais je voudrais un moyen de recharger les données entièrement dans chaque test ultérieur. Donc, dans ce cas, j'aimerais que le champ Sns de eventData.Records [0] soit intact lorsque je le rends opérationnel dans un ou plusieurs tests ultérieurs.

J'ai "re-requis" les données dans les tests suivants, mais le champ Sns est toujours manquant/supprimé.

Répondre

1

Vous pouvez cloner l'objet eventData immédiatement après qu'il est chargé de sorte que vous avez toujours une copie propre disponible:

var eventDataCLEAN = JSON.parse(JSON.stringify(eventData)); 

Ensuite, chaque fois que vous avez besoin d'une nouvelle copie propre, il suffit de faire ceci:

eventData = eventDataCLEAN; 
+0

travaillé comme un charme. Honnêtement un peu énervé j'ai négligé ce modèle. Tu es l'homme Dr. Cool. –