You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Cypress TypeScript:如何从DataTable取值并同步执行对应操作?

按行同步执行DataTable中state与message的对应操作

你有一个用于场景校验的DataTable,结构如下:

statemessage
Deactivatederror
Takenerror
Unusedconfirmation

步骤定义为 Given user inputs "<state>" and sees "<message>" message,但你之前的代码会先执行所有state对应的操作,再执行所有message的操作,无法按行同步配对执行,修改为map()后问题依旧。

解决方法

把每行的state操作和message操作放在同一个循环迭代里,遍历每一行时,先执行当前行的state对应操作,紧接着执行当前行的message对应操作,就能实现按行同步执行。

修改后的代码如下:

Given('user inputs {string} and sees {string} message', (dataTable: DataTable) => {
  // 遍历每一行数据,在同一个循环内处理当前行的state和message
  dataTable.hashes().forEach(elem => {
    // 处理当前行的state操作
    if (elem.state === 'Deactivated') {
      <DeactivatedAction>
    } else if (elem.state === 'Taken') {
      <TakenAction>
    } else if (elem.state === 'Unused') {
      <UnusedAction>
    } else {
      throw new Error("No state defined")
    }

    // 紧接着处理当前行的message操作
    if (elem.message === 'error') {
      <errorAction>
    } else if (elem.message === 'confirmation') {
      <confirmationAction>
    } else {
      throw new Error("No message type defined")
    }
  })
})

原代码问题说明

你之前的写法是两个独立的forEach循环:第一个循环遍历所有行执行state操作,第二个循环再遍历所有行执行message操作,这就导致所有state操作先批量完成,才会开始执行message操作,自然无法实现行级的同步配对。

内容的提问来源于stack exchange,提问作者Faith Berroya

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 19:20:40