Я хочу дважды заглушить одну и ту же конечную точку API, поэтому второй вызов возвращает ответ, отличный от первого. Вот фрагмент, как я представляю, как это будет работать:
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
В первый раз, когда я пытаюсь войти в систему, он запрещает доступ, я изменяю входные данные формы и затем он должен позволить мне войти.
Я пытался обернуть второе определение cy.route(...)
в качестве функции обратного вызова для первого вывода, но Cypress отрицает вызов cy.anything
в обещаниях. Как в примере ниже
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401, onResponse: () => {
cy.fixture('login_screen/login_success_response.json').as('loginSuccessResponse')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')}
}}).as('loginFail')
вот мой тестовый пример:
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
cy.get("form input[type='email']").type("bad@email.com")
cy.get("form input[type='password']").type("Bad password")
// this should fail
cy.get("form").submit()
cy.get("form input[type='password']").type("g00d@password.com")
// this should let me in
cy.get("form").submit()