#javascript #cypress
#javascript #cypress
Вопрос:
У меня есть файл fixture в cypress, в котором есть данные json
Я хочу иметь возможность обновлять поля в этом файле fixture при запуске тестового скрипта
Например, файл fixture будет читать
{
table: [
{
name: 'Joe',
number: 1,
},
{
name: 'Bob',
number: 2,
},
],
};
И я хочу обновить числовые поля до 3 и 4
Я пробовал
cy.fixture('dataFile.json')
.as('data')
.then((data) => {
data.table[0].number = 3;
data.table[1].number = 4;
});
но он не работает
, когда я запускаю тест, я все еще вижу, что все ведет себя так, как будто числовые поля по-прежнему равны 1 и 2.
Если я напечатаю поля на консоли, я увижу, что они действительно обновлены, но cypress все еще работает с исходными данными
Я все еще новичок как в cypress, так и в javascript. Как я могу обойти это?
Ответ №1:
Для достижения этой цели вы должны использовать как cy.ReadFile(), так и cy.WriteFile() . Вы можете написать что-то вроде:
cy.readFile("cypress/fixtures/dataFile.json", (err, data) => {
if (err) {
return console.error(err);
};
}).then((data) => {
data.table[0].number = 3
data.table[1].number = 4
cy.writeFile("cypress/fixtures/dataFile.json", JSON.stringify(data))
})
Комментарии:
1. Это сработало для меня. Кроме того, вы можете сделать
JSON.stringify(data, null, 2)
, чтобы отформатировать файл json