赛普拉斯测试 - 不要拦截 api 请求
Cypress test - Do not intercept api request
我需要测试一个项目的一些页面,这个项目对外部服务进行了一些 API 调用。
我需要确保进行了这些调用,并检查我的页面是否根据响应进行了相应更改。
这是我的测试:
describe('A logged in user', () =>{
it('can see his subscriptions', () => {
...... some checks .......
cy.intercept('https://example.com/api/v2/user-panel/get-subscription').as('userSubscription');
cy.wait('@userSubscription', { timeout: 35000 }).then(() => {
cy.contains('some text');
});
});
});
当我 运行 代码似乎无法调用 API 但页面内容正确更改。
这是赛普拉斯的回应:
Timed out retrying after 35000ms: cy.wait() timed out waiting 35000ms
for the 1st request to the route: userSubscription. No request ever
occurred.
我尝试增加超时,如果页面在 1 秒内加载,但结果是一样的。
我有什么想念的吗?
在 cy.intercept()
之后立即执行 cy.wait()
是行不通的。
无论触发 API 调用(cy.visit()
或 .click()
)都必须在 [=25 之后发生=] 拦截已经设置,因此准备好捕捉 API 调用。
cy.intercept('/activities/*', { fixture: 'activities' }).as('getActivities')
cy.intercept('/messages/*', { fixture: 'messages' }).as('getMessages')
// visit the dashboard, which should make requests that match
// the two routes above
cy.visit('http://localhost:8888/dashboard')
// pass an array of Route Aliases that forces Cypress to wait
// until it sees a response for each request that matches
// each of these aliases
cy.wait(['@getActivities', '@getMessages'])
// these commands will not run until the wait command resolves above
cy.get('h1').should('contain', 'Dashboard')
我需要测试一个项目的一些页面,这个项目对外部服务进行了一些 API 调用。
我需要确保进行了这些调用,并检查我的页面是否根据响应进行了相应更改。
这是我的测试:
describe('A logged in user', () =>{
it('can see his subscriptions', () => {
...... some checks .......
cy.intercept('https://example.com/api/v2/user-panel/get-subscription').as('userSubscription');
cy.wait('@userSubscription', { timeout: 35000 }).then(() => {
cy.contains('some text');
});
});
});
当我 运行 代码似乎无法调用 API 但页面内容正确更改。
这是赛普拉斯的回应:
Timed out retrying after 35000ms: cy.wait() timed out waiting 35000ms for the 1st request to the route: userSubscription. No request ever occurred.
我尝试增加超时,如果页面在 1 秒内加载,但结果是一样的。
我有什么想念的吗?
在 cy.intercept()
之后立即执行 cy.wait()
是行不通的。
无论触发 API 调用(cy.visit()
或 .click()
)都必须在 [=25 之后发生=] 拦截已经设置,因此准备好捕捉 API 调用。
cy.intercept('/activities/*', { fixture: 'activities' }).as('getActivities')
cy.intercept('/messages/*', { fixture: 'messages' }).as('getMessages')
// visit the dashboard, which should make requests that match
// the two routes above
cy.visit('http://localhost:8888/dashboard')
// pass an array of Route Aliases that forces Cypress to wait
// until it sees a response for each request that matches
// each of these aliases
cy.wait(['@getActivities', '@getMessages'])
// these commands will not run until the wait command resolves above
cy.get('h1').should('contain', 'Dashboard')