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

如何在CLI convert命令测试中校验float类型的输出值

测试代码调整方案

你可以参考以下修改后的代码完成float类型输出校验,核心思路是先将字符串格式的stdout转换为数值类型,再使用适配浮点数的断言避免精度校验问题:

describe('convert', () => {
  // 无参数convert命令用例,可根据实际默认输出调整预期值
  test
  .stdout()
  .command(['convert'])
  .it('runs convert', ctx => {
    // 先移除输出前后的换行、空格等空白字符,再转为float
    const output = Number(ctx.stdout.trim())
    // 示例为默认换算1单位EUR到USD的预期,可替换为你的实际预期值,0.0001为允许的误差范围
    expect(output).to.be.closeTo(0.9234, 0.0001)
  })

  test
  .stdout()
  .command(['convert', '--amount', '50', '--from', 'EUR', '--to', 'USD'])
  .it('convert --amount 50 --from EUR --to USD', ctx => {
    const output = Number(ctx.stdout.trim())
    // 示例预期50欧元兑换为54.1234美元,可根据实际汇率调整预期值和误差范围
    expect(output).to.be.closeTo(54.1234, 0.0001)
  })
})

关键调整说明

  • 输出预处理:CLI的stdout默认是字符串格式,且通常末尾会自带换行符,所以先用trim()移除前后空白字符,再通过Number()转为浮点数
  • 浮点数断言:不要用equal或contain直接比对,改用closeTo断言,第二个参数为允许的误差范围,适配汇率这类可能有轻微波动或者浮点计算精度偏差的场景
  • 如果你的命令输出不是纯数字,比如包含提示文本,例如输出为Result: 1.2345 USD,可以用正则提取数值部分再做校验,参考写法:
    const numMatch = ctx.stdout.match(/(\d+\.\d+)/)
    if (!numMatch) throw new Error('未找到输出中的数值')
    const output = Number(numMatch[1])
    

内容的提问来源于stack exchange,提问作者Jorge G.B.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:06:07