Я закрываю запрос api в своем сквозном тесте и хотел бы иметь возможность возвращать другой ответ в зависимости от отправленных параметров запроса.
В настоящее время моя заглушка возвращает статический ответ независимо от того, что было опубликовано, и выглядит так:
cy.server()
cy.route({
method: 'POST',
url: '**/redeem-code',
status: 200,
response: {
status: "Success"
},
delay: 500
})
Я хотел бы иметь возможность проверить параметры опубликованного запроса, а затем условно решить, какой ответ вернуть. Я пытаюсь сделать что-то вроде этого:
cy.server()
cy.route({
method: 'POST',
url: '**/redeem-code',
status: 200,
response: (req) => {
if (req.code == '1234') return { status: "Success" }
else return { status: "Failure" }
},
delay: 500
})
Очевидно, что приведенный выше код не работает; это просто пример того, что я пытаюсь сделать.
Я знаю, что Cypress допускает методы ответа, но я не могу найти синтаксис того, что я хочу сделать, в их документации. Как мне получить параметры запроса в моем методе ответа, чтобы я мог решить, какой ответ возвращать?
Я тоже ищу решение этой проблемы.
почти там (github.com/cypress-io/cypress/pull/4176)



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Я считаю, что это должно сработать
cy.server({
onResponse: ({ status, url, response }) => {
if (url !== 'yoururl') return response;
return {
...response,
body: { status: status === 1234 ? 'success' : 'failure' }
};
}
});
Спасибо за ваш совет. Вы были очень близки, но без сигары. См. Мой обновленный вопрос для получения более подробной информации.
К сожалению, в настоящее время это не поддерживается в cy.server.
Проблема отслеживается здесь: https://github.com/cypress-io/cypress/issues/521
Используйте стандартный mocking javascript. Вы можете запустить эти макеты в тестах, используя cypress onBeforeLoad, несколько раз упомянутый в связанный выпуск. Это некрасиво. Надеюсь, cypress получит встроенную поддержку в cy.server.
У меня была такая же проблема, и я сделал функцию, чтобы включить это. Для этого действительно требуется URL-адрес возврата, но инструкции по установке кода можно увидеть здесь https://bitbucket.org/snippets/matt-tasc/onraxo
EMacsVI, удалось ли найти решение? Я столкнулся с той же проблемой