2017-01-10 1 views
0

Итак, вот мой вопрос:Как я могу удалить конкретное поле в JSON для тестирования, а затем перезагрузить JSON в другом тесте без кэширования удаления?

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 кэширует модули, но мне хотелось бы, чтобы все данные перезагрузились в каждом последующем тесте. Поэтому в этом случае я бы хотел, чтобы поле Sns eventData.Records [0] было нетронутым, когда я ввел его в действие в любом последующем тесте (тестах).

В последующих тестах я «потребовал» данные, но поле Sns все еще отсутствует/удалено.

ответ

1

Вы могли клонировать eventData объект сразу после его загрузки, так что вы всегда иметь чистую копию доступной:

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

Тогда всякий раз, когда вам нужен новый чистую копию, просто сделать это:

eventData = eventDataCLEAN; 
+0

Работали Как колдовство. Честно немного разозлившись, я упустил эту картину. Ты человек доктор Клоу. –

Смежные вопросы