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

Cypress断言失败求助:数值格式匹配异常排查

Cypress断言失败排查:看似相同的字符串不匹配问题

问题核心是两个字符串的空格类型不一致:页面返回文本中的空格是非-breaking空格(NBSP,Unicode编码U+00A0),而你代码生成的formattedamt1里是普通空格(U+0020)。这两个字符视觉上完全相同,但实际编码不同,导致include断言无法匹配。

从错误提示就能看出差异:'10 709,27'(NBSP) vs '10 709,27'(普通空格)。

解决方案

以下几种方式都能解决问题:

  • 处理页面文本,统一空格类型
    修改获取页面文本的逻辑,把NBSP替换成普通空格:

    cy.getBySel('amt1').should($test => {
      const test1 = $test.text()
        .replace('€', " ")
        .replace(/\u00A0/g, ' ') // 替换所有NBSP为普通空格
        .trim()
      expect(test1).to.include(formattedamt1)    
    })
    
  • 生成预期值时使用NBSP
    调整formattedamt1的替换逻辑,用NBSP替代普通空格:

    const formattedamt1 = amt1.trim().replace(/\d{2}(?!$)/, '$& ') // 这里的空格是NBSP,也可以写成'\u00A0'
    
  • 跳过空格,直接比较数值
    更稳妥的方式是提取纯数值部分,转换为数字后比较,避免格式差异影响:

    cy.getBySel('amt1').should($test => {
      const testText = $test.text()
      // 移除欧元符号、所有空格,把逗号转成点后转成数值
      const testValue = parseFloat(testText.replace(/[€\s]/g, '').replace(',', '.'))
      // 计算预期数值(保留两位小数)
      const expectedValue = parseFloat((250.78 + 5005.58 + 20001.35) * 0.424).toFixed(2)
      expect(testValue).to.equal(parseFloat(expectedValue))
    })
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 07:31:20