赛普拉斯 | Chai 断言在 if else 条件之外执行。 if条件里面提到断言

Cypress | Chai assertions executes outside if else condition. Assertions are mentioned inside if condition

我正在编写一个 cypress 自定义命令,它从 API 端点获取 json 响应。我正在对 json 响应写一些断言。但是,我有一个 if-else 条件要执行。见下文。

cy.getReportJson('84b636f4-c8f0-4aa4-bdeb-15abf811d432',user).then(report=> {
                    
                    if(services.request_criminal_record_check.include){
                        console.log('inside if')
                        cy.wait(30000)
                        expect(report.report_summary.rcmp_result.status).equal(data.expected_result.rcmp_result.status)
                        expect(report.report_summary.rcmp_result.overall_score).equal(data.expected_result.rcmp_result.overall_score)
                        expect(report.report_summary.rcmp_result.result).equal(data.expected_result.rcmp_result.result)
                    }
                })

当我 运行 将这段代码放在 spec 文件中时,我得到的输出如下。

如您所见,断言是 运行ning,在等待命令被触发之前。 我希望 cypress 等待 30 秒,以便后端 运行 发挥其魔力并生成报告,30 秒后,我想在报告 json 上断言。 甚至 console.log 在执行断言后也会打印出来。

这与 Cypress 的异步特性有关吗?

您需要对断言进行排队。 expect()... 立即运行,但 cy.wait() 正在暂停队列执行。

cy.wait(30000)
cy.then(() => {                 
  expect(...).equal(...)
  expect(...).equal(...)
  expect(...).equal(...)
})