0

Okay, so here's my issue:

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();
 });
});

I want to remove particular fields for testing here, and this works fine. But the issue arrises when I try to reload the same module in the next test. When eventData is reloaded, it is missing the field I deleted in the previous test. I think this is due to how Node caches modules but I'd like a way to reload the data entirely in each subsequent test. So in this case, I'd like the Sns field of eventData.Records[0] to be untouched when I operationalize it in any subsequent test(s).

I have "re-required" the data in subsequent tests but the Sns field is still missing/deleted.

Sam S.
  • 348
  • 1
  • 3
  • 15

1 Answers1

1

You could clone the eventData object immediately after it's loaded so you always have a clean copy available:

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

Then whenever you need a new clean copy, just do this:

eventData = eventDataCLEAN;
Dr. Cool
  • 3,713
  • 3
  • 22
  • 26
  • Worked like a charm. Honestly a little pissed I overlooked that pattern. You're the man Dr. Cool. – Sam S. Jan 10 '17 at 20:55