Как обновить файл fixture в Cypress

#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