好的,这是我的问题:
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;