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

Jest测试multiply两数相乘函数结果不符预期的问题排查

Jest multiply 单元测试报错原因

你的代码存在以下几个明确问题,直接导致测试无法通过:

  • 函数未接收传入参数:测试用例调用multiply方法时传入了包含两个待计算数字的数组[2,4],但你定义的multiply函数没有声明任何形参,根本无法获取传入的待计算数值。
  • 计算逻辑完全不符合需求:函数内写的[`0`] * [`0`]是JS隐式类型转换的特殊写法,两个仅含字符串'0'的单元素数组做乘法时,会被分别转成数字0做计算,永远返回固定值0,完全没有基于传入参数做乘积运算。
  • 方法挂载对象不匹配:测试用例是通过calculator.multiply()的形式调用方法,你仅单独声明了一个游离的multiply函数,没有将其挂载到calculator对象上,运行时会直接抛出calculator.multiply is not a function的类型错误。
  • 额外注意:你贴出的测试代码缺少describe块的闭合括号,运行时也会报语法错误。

修正后可通过测试的代码

功能实现代码

const calculator = {
  multiply: function (numList) {
    // 取传入数组的前两个值做乘积,如需支持多数字相乘可替换为 numList.reduce((a,b) => a*b, 1)
    return numList[0] * numList[1];
  }
};
// 若使用CommonJS模块化规范,需添加导出语句:module.exports = calculator;

补全语法的测试代码

describe('multiply', () => {
  test('multiplies two numbers', () => {
    expect(calculator.multiply([2,4])).toBe(8);
  }); 
});

修正后运行测试,calculator.multiply([2,4])会正确返回8,和断言预期值匹配,测试即可通过。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 23:51:21