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;
工作得很有魅力。老实说,我有点生气,我忽略了这个模式。你就是那个酷博士。