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

Cypress表格多规则排序校验报错:期望数组深度相等

修复Cypress表格排序校验的解决方案

核心问题分析

  • 数组拆分逻辑错误:原代码把所有单元格的文本合并后用split(/\s+/)拆分,会把带空格的公司名称(比如"ABC Corp")拆成多个数组元素,完全破坏了数据结构,这是触发expected [Array(14)] to deeply equal [Array(14)]的主要原因。
  • 未实现货币优先级规则:原代码仅处理了基础字母排序,未按要求实现TND优先、其次欧元、美元,剩余按字母排序的规则。

修复后的代码实现

1. 公司名称按字母顺序排序校验

// 正确收集每一行的公司名称,避免拆分带空格的名称
cy.get('#accounts-list-table tbody tr')
  .find(`td:eq(${companyColumnIndex})`)
  .each(($td) => Cypress.$($td).text().trim()) // 遍历每个单元格,提取清洗后的文本
  .then(companyNamesArray => {
    cy.log('当前表格的公司名称顺序:', companyNamesArray);

    if (companyNamesArray.length === 0) {
      cy.log('警告:公司列无内容');
      expect(true).to.be.true; // 空状态下标记测试通过
      return;
    }

    // 生成按字母排序后的预期数组
    const sortedByCompany = [...companyNamesArray].sort((a, b) => a.localeCompare(b));
    
    cy.log('预期的字母排序顺序:', sortedByCompany);

    // 校验当前表格顺序是否符合字母排序规则
    expect(companyNamesArray).to.deep.equal(sortedByCompany);
  });

2. 货币列按自定义优先级排序校验

假设货币列索引为currencyColumnIndex,实现TND > EUR > USD > 其余按字母排序的规则:

// 定义货币优先级权重,数值越大优先级越高
const currencyPriority = {
  'TND': 3,
  'EUR': 2,
  'USD': 1
};

cy.get('#accounts-list-table tbody tr')
  .find(`td:eq(${currencyColumnIndex})`)
  .each(($td) => Cypress.$($td).text().trim())
  .then(currencyArray => {
    cy.log('当前表格的货币顺序:', currencyArray);

    if (currencyArray.length === 0) {
      cy.log('警告:货币列无内容');
      expect(true).to.be.true;
      return;
    }

    // 生成符合自定义优先级的排序数组
    const sortedByCurrency = [...currencyArray].sort((a, b) => {
      const priorityA = currencyPriority[a] || 0;
      const priorityB = currencyPriority[b] || 0;
      // 优先级不同时,权重大的排前面
      if (priorityA !== priorityB) {
        return priorityB - priorityA;
      }
      // 优先级相同时按字母顺序排序
      return a.localeCompare(b);
    });
    
    cy.log('预期的货币排序顺序:', sortedByCurrency);

    // 校验当前表格顺序是否符合自定义规则
    expect(currencyArray).to.deep.equal(sortedByCurrency);
  });

额外调试建议

  • 在校验前打印当前数组和预期数组的具体内容,快速定位差异点
  • 如果表格支持升/降序切换,需根据当前排序方向调整sort函数的返回值(比如降序时反转排序结果)

内容的提问来源于stack exchange,提问作者Eya Dimessi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 02:02:45