Заглушка одна и та же конечная точка дважды в кипарисе - PullRequest
0 голосов
/ 09 мая 2018

Я хочу дважды заглушить одну и ту же конечную точку 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()

1 Ответ

0 голосов
/ 09 мая 2018

Каждый раз, когда вы определяете .route('VERB', '/endpoint', ...), он отменяет ваше предыдущее определение. Самое простое решение - переопределить эту конечную точку после того, как вы закончите свой первый вызов

Этот тест будет работать для вас, Филипп.

cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
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.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
cy.get("form input[type='password']").type("g00d@password.com")
// this should let me in
cy.get("form").submit()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...