好的,这就是我的问题:
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字段仍然缺失/删除。
答案 0 :(得分:1)
您可以在加载后立即克隆eventData
对象,以便始终提供干净的副本:
var eventDataCLEAN = JSON.parse(JSON.stringify(eventData));
然后,无论何时需要新的干净副本,只需执行以下操作:
eventData = eventDataCLEAN;