Javascript 我如何删除JSON中用于测试的特定字段,然后在另一个测试中重新加载JSON而不缓存删除内容?

Javascript 我如何删除JSON中用于测试的特定字段,然后在另一个测试中重新加载JSON而不缓存删除内容?,javascript,json,node.js,amazon-web-services,should.js,Javascript,Json,Node.js,Amazon Web Services,Should.js,好吧,这是我的问题: 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, {}, (er

好吧,这是我的问题:

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();
 });
});
我想在这里删除特定的测试字段,这样做很好。但当我在下一次测试中尝试重新加载相同的模块时,问题就出现了。当重新加载eventData时,它缺少我在上一次测试中删除的字段。我认为这是由于节点缓存模块的方式造成的,但我希望在每个后续测试中都能完全重新加载数据。因此,在本例中,我希望eventData.Records[0]的Sns字段在任何后续测试中操作时保持不变


我已在后续测试中“重新要求”数据,但Sns字段仍然丢失/删除。

您可以在加载
eventData
对象后立即克隆该对象,以便始终有一个干净的副本可用:

var eventDataCLEAN = JSON.parse(JSON.stringify(eventData));
然后,每当您需要新的干净副本时,只需执行以下操作:

eventData = eventDataCLEAN;

工作得很有魅力。老实说,我有点生气,我忽略了这个模式。你就是那个酷博士。