我想两次存根相同的API端点,因此第二次调用返回的响应与第一次不同。以下是我想象这会起作用的片段:
cy.route('POST', 'access-tokens', '@loginFailResponse', {status: 401}).as('loginFail')
cy.route('POST', 'access-tokens', '@loginSuccessResponse').as('loginSuccess')
我第一次尝试登录时拒绝访问,我更改了表单输入,然后它应该允许我进入。
我尝试将第二个cy.route(...)
定义作为回调函数包装到第一个输出,但是cypress拒绝在promises中调用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()
答案 0 :(得分:1)
每当您定义.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()