【发布时间】:2021-10-29 14:58:33
【问题描述】:
我正在编写一个 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)
}
})
当我在规范文件中运行此代码时,我得到的输出如下。
如您所见,在触发等待命令之前,断言正在运行。 我想让 cypress 等待 30 秒,以便后端运行它的魔力并生成报告,30 秒后,我想在报告 json 上断言。 甚至 console.log 在断言执行后也会打印出来。
这与赛普拉斯的异步特性有关吗?
【问题讨论】:
-
等待这么长的时间不是一个好习惯。您应该实现一些带有超时的东西,这样每当所需的活动完成时,它就会继续执行下一个命令。
-
@AlapanDas 我们在模拟响应中有一个人工诱导的延迟,以模拟现实世界报告生成的时间线。当您等待 DOM 元素做某事时,使用超时是正确的方法。但是,请详细说明我们如何使用超时来等待 API 响应,以返回特定值?
标签: if-statement cypress chai assertion