我有一个数据驱动的赛普拉斯代码,如下所示。 我正在尝试根据“数据”变量的值动态生成测试。
let data:QuestionData[];
describe("Add data to admin", ()=>{
before(async ()=>{
data = await promisify(cy.task("readCSV",csvFile));
});
data.forEach((val,index)=>{
it(`Should add val ${val}`, ()=>{
console.log(index);
})
})
});
我的“readCSV”方法只是读取 csv 并解析数据。
当我运行上面的代码时,我收到此错误 -> 无法读取未定义的属性(读取“forEach”)。
原因是“data.forEach”在变量初始化之前运行。 如果我在“before”挂钩内写入“console.log”,我可以看到数据可用。 但是为什么数据变量在 BEFORE HOOK 之外不可用? 如果我访问“it”块内的“data”变量并用于lood,我的代码就可以工作。 但我希望动态生成测试。
如何在 cypress.io 中解决此问题?
尝试将箭头功能更改为普通功能:https://mochajs.org/#arrow-functions
cy.task() 不返回 Promise 吗?对 Promise 调用 promisify() 应该会抛出错误。