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

如何使用Jest为Length.convert()方法编写测试用例?

如何用Jest测试Length类的convert()方法

针对你的Length类convert()方法的逻辑,核心要覆盖两个分支:系统标识为"I"的特殊处理,以及所有非"I"的统一处理(包括"M")。下面是具体的测试方案和修正后的代码:

先修正你的测试代码问题

你当前的导入方式错误,应该直接导入Length类,而不是分开导入constructor和convert。因为你的模块导出的是整个类,必须实例化后才能调用convert方法。

完整的Jest测试代码

const Length = require("./length");

// 测试系统标识为"I"的转换逻辑
test("当系统为'I'时,正确将英寸转换为厘米", () => {
  const length = new Length(20, "I");
  expect(length.convert()).toBe("50.80");
});

// 测试系统标识为"M"的转换逻辑(属于非"I"分支)
test("当系统为'M'时,正确将厘米转换为英寸", () => {
  const length = new Length(7, "M");
  expect(length.convert()).toBe("2.76");
});

// 额外测试任意非"I"的系统,确保分支逻辑覆盖全面
test("当系统为任意非'I'值时,统一执行厘米转英寸逻辑", () => {
  const length = new Length(10, "X"); // 用任意非"I"标识测试
  expect(length.convert()).toBe("3.94");
});

测试逻辑说明

  • 针对"I"分支:直接实例化系统为"I"的Length对象,验证转换结果是否符合measure * 2.54并保留两位小数的预期。
  • 针对非"I"分支:
    1. 先测你的示例中用到的"M",确保实际场景的正确性;
    2. 额外测试一个非"I"非"M"的标识(比如"X"),确保所有非"I"的情况都能正确进入else分支,避免后续新增系统标识时出现逻辑漏洞。

补充:模块导出注意

如果你的length.js文件没有显式导出Length类,需要在文件末尾添加:

module.exports = Length;

内容的提问来源于stack exchange,提问作者Mads L. Møller

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:55:18