В нашем веб-приложении есть параметры, которые можно изменить с помощью HTTP-запроса POST.Есть много вариантов, и я буду писать новый тест для каждого из них, поэтому я не хочу использовать пользовательский интерфейс для изменения каждого параметра, поскольку их 150.Так что моя идея заключалась в том, чтобы создать пользовательскую команду, в которую я мог бы передавать аргументы (аргументом является то, какой параметр я хочу обновить, и новое значение для этого параметра).
Я поместил список опций в осветитель, поэтому он находится в объекте JSON.Мне удалось добраться до точки, где я могу найти ключ, который я ищу, и обновить значение из этого прибора, но я столкнулся с проблемой, когда мой cy.request фактически не будет отправлять какие-либо данные.Я попытался обновить заголовки, обновить тело, установить json: true.Ничего не работаетПоэтому я надеюсь, что у кого-то здесь будет какой-то совет.
//fixture.json
{
"option1":"on",
"option2":"off",
"option3":"off
}
//commands.js
Cypress.Commands.add('update_options',(option, newValue) => {
cy.fixture('fixture.json').then((oldBody)=>{
let newBody = Objects.assign({},oldBody);//copy old options list into new object
function replace(option, newBody){
newBody[option]=newValue;
}
replace(option,newValue);
cy.request({
method:'POST',
url:'myURLwithParams',
form: true,
json: true,
body: newBody
})
});
});
//spec.js
cy.update_options("options1", "off");
Я могу получить новый объект с обновленным кодом и всем, чтобы все работало.Единственная вещь, которую я не могу понять, - как заставить это фактически ПОЧТУ.JSON просто не компилируется правильно.Я попробовал JSON.stringify (newBody) - не повезло.Я испробовал все комбинации из всего, что упомянул, и не могу заставить его работать.