赛普拉斯 | 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(...)
})
我正在编写一个 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(...)
})