cypress - 如何捕获赛普拉斯中的所有 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 全部列出。解决方案是什么?
解决方案
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
})
})
推荐阅读
- java - 如何使程序说明数组列表中不存在的索引
- kotlin - Kotlin 扩展函数 - 编译器无法推断 nullable 不为 null
- java - 我们如何在使用 Cucumber 实现的相同场景中使用 Selenium WebDriver 和 Appium?
- ios - iOS 13 - 没有文字 Swift 的自定义后退按钮
- java - 为什么不能使用 JPA 更改实体的引用对象?
- css - 使用带逗号的 ~(波浪号)时出现 CSS 意外行为
- terraform - 使用 main.tf 文件的路径启动 Terraform 时更改 .terraform 和 terraform.tfstate 目录的位置
- c# - 无法在 Visual Studio for Mac 8.1.3 版中构建 xamarin iOS 应用程序
- highcharts - Highcharts 左侧双 y 轴(柱形图)
- jms - 是否可以有一个远程池化 JMS 连接工厂(WildFly 10)?