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

How would I go about deleting a particular field within a JSON for a test, then reloading the JSON in another test without caching the delete?

好的,这是我的问题:

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 字段在我在任何后续测试中对其进行操作时保持不变。

我在后续测试中有"re-required"数据,但Sns字段仍然是missing/deleted。

您可以在加载 eventData 对象后立即对其进行克隆,这样您就可以随时获得干净的副本:

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

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

eventData = eventDataCLEAN;