使用异步数据生成 Cypress.io 动态测试

问题描述 投票:0回答:1

我有一个数据驱动的赛普拉斯代码,如下所示。 我正在尝试根据“数据”变量的值动态生成测试。

    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 中解决此问题?

javascript io cypress
1个回答
0
投票

尝试将箭头功能更改为普通功能:https://mochajs.org/#arrow-functions

cy.task() 不返回 Promise 吗?对 Promise 调用 promisify() 应该会抛出错误。

© www.soinside.com 2019 - 2024. All rights reserved.