首页 > 解决方案 > 如何捕获赛普拉斯中的所有 API 调用?

问题描述

加载聊天应用程序时,我有 API 调用,30 个调用/组(它是在每个组上加载最后 30 条消息)。假设在一个案例中,我测试了一个只有 2 个组的用户。所以我希望看到 60 个 API 调用。

我尝试使用以下代码。

it('Call 30 group messages APIs for every favorite group', () => {
    cy.server()
    cy.route(awsUrl + '/**').as('apiMessageContent')

    for (let i = 0; i < 60; i++) {
      cy.wait('@apiMessageContent', { timeout: 30000 }).then(res => {
        expect(res.status).not.to.be.null
      })
    }
  })

但是结果 cypress 随机只能捕获 28-30 个 API 调用,之后的其他路由等待都失败了。事实上,在 cypress 左侧面板中,我可以看到 60 XHR 全部列出。解决方案是什么?

标签: cypress

解决方案


cy.wait可以接受Aliases 数组,因此您可以通过@apiMessageContent这种方式等待,而不是循环等待 60 次。尽管尚不清楚为什么您的解决方案不起作用。

cy.wait(Array(60).fill('@apiMessageContent'), { timeout: 30000 }).then((xhrs) => {
    xhrs.forEach((res) => {
        expect(res.status).not.to.be.null
    })
})

推荐阅读