好的,这是我的问题:

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时,它缺少我在先前测试中删除的字段。我认为这是由于Node缓存模块的方式所致,但我希望有一种方法可以在每个后续测试中完全重新加载数据。因此,在这种情况下,我希望在以后的任何测试中进行操作时,eventData.Records [0]的Sns字段都保持不变。

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

最佳答案

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

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


然后,每当需要新的干净副本时,只需执行以下操作:

eventData = eventDataCLEAN;

08-04 14:07