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

如何使用Jest为JavaScript嵌套方法编写单元测试

Jest 测试 Calculator 方法实现方案

前置代码调整

首先需要修改原calculator.js文件,在文件末尾添加导出语句,方便测试文件引入构造函数:

function Calculator() {
    var self = this;
    
    self.add = function (a, b) {
        return a+b;
    }
    
    self.sub = function(a, b) {
        return a-b;
    }
    
    self.mul = function(a, b) {
        return a*b;
    }

    self.div = function(a, b) {
        return a/b;
    }               
}
// 新增导出语句
module.exports = Calculator;

环境准备

在项目目录下执行命令安装Jest依赖:
npm install jest --save-dev
打开项目的package.json文件,修改scripts配置,添加test命令:

{
  "scripts": {
    "test": "jest"
  }
}

编写测试用例

在calculator.js同目录下新建calculator.test.js文件,写入以下测试代码:

// 引入Calculator构造函数
const Calculator = require('./calculator');
let calculator;

// 每个测试用例执行前都重新实例化对象,避免用例间状态污染
beforeEach(() => {
  calculator = new Calculator();
});

// 分组管理四则运算测试用例
describe('Calculator四则运算方法测试', () => {
  test('add方法 正确计算两数之和', () => {
    expect(calculator.add(1, 2)).toBe(3);
    expect(calculator.add(-1, 1)).toBe(0);
    // 浮点数计算存在精度误差,使用toBeCloseTo做近似断言
    expect(calculator.add(0.1, 0.2)).toBeCloseTo(0.3);
  });

  test('sub方法 正确计算两数之差', () => {
    expect(calculator.sub(5, 3)).toBe(2);
    expect(calculator.sub(1, 10)).toBe(-9);
    expect(calculator.sub(0.5, 0.2)).toBeCloseTo(0.3);
  });

  test('mul方法 正确计算两数乘积', () => {
    expect(calculator.mul(3, 4)).toBe(12);
    expect(calculator.mul(-2, 5)).toBe(-10);
    expect(calculator.mul(0.1, 0.2)).toBeCloseTo(0.02);
  });

  test('div方法 正确计算两数之商', () => {
    expect(calculator.div(10, 2)).toBe(5);
    expect(calculator.div(-6, 2)).toBe(-3);
    // 当前实现未处理除数为0的场景,执行后会返回Infinity
    expect(calculator.div(5, 0)).toBe(Infinity);
  });
});

注意事项

  • 所有四则运算方法都挂载在Calculator实例上,因此用beforeEach钩子在每个测试用例执行前重新生成实例,避免不同用例之间的状态互相干扰
  • 浮点数运算受JS语言特性影响存在精度误差,不要直接用toBe做严格相等判断,使用Jest内置的toBeCloseTo做近似值断言
  • 当前div方法未对除数为0的场景做特殊处理,如果业务需要拦截该场景,可修改方法逻辑抛出错误,再补充对应的异常测试用例

运行测试

在项目目录下执行命令npm test,Jest会自动识别目录下的.test.js后缀文件并执行,最终输出测试通过率、失败用例详情等信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:06:27