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

时间:2017-01-10 20:36:13

标签: 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, {}, (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字段仍然缺失/删除​​。

1 个答案:

答案 0 :(得分:1)

您可以在加载后立即克隆eventData对象,以便始终提供干净的副本:

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

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

eventData = eventDataCLEAN;