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

如何在测试用例中获取sum函数内部变量res的值?

如何获取函数内部变量res的值?

函数内部用var声明的res是局部变量,外部默认无法直接访问,你可以通过以下几种方式获取它的值:

1. 修改原函数返回结果(最直接)

如果允许修改sum函数,可以让它返回包含计算结果的对象,同时保留原来的true状态:

function sum(a,b){
  var res = a+b;
  return { result: res, status: true };
}

test('sum of numbers', () => {
  const { result } = sum(1,2);
  expect(result).toBe(3);
});

如果不需要保留true的返回值,也可以直接返回res:

function sum(a,b){
  var res = a+b;
  return res;
}

test('sum of numbers', () => {
  expect(sum(1,2)).toBe(3);
});

2. 重写函数(不修改原函数源码)

如果不能改动原函数的代码,可以在测试时重写sum函数,模拟内部计算逻辑并返回结果:

// 假设使用Jest测试框架
const originalSum = sum;

// 重写sum函数
sum = jest.fn((a, b) => {
  const res = a + b;
  return res;
});

test('sum of numbers', () => {
  expect(sum(1,2)).toBe(3);
  // 测试完成后恢复原函数(可选)
  sum = originalSum;
});

3. 动态修改函数代码(非常规方法)

把原函数转为字符串,修改返回语句后用eval执行,得到能返回res的新函数:

function sum(a,b){
  var res = a+b;
  return true;
}

// 提取函数代码并修改返回值
const sumCode = sum.toString().replace('return true;', 'return res;');
const modifiedSum = eval(`(${sumCode})`);

test('sum of numbers', () => {
  expect(modifiedSum(1,2)).toBe(3);
});

注意:局部变量的封装是JavaScript的作用域特性,上述方法都是通过改变函数的行为来间接获取值,没有办法直接在外部访问未暴露的局部变量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 14:15:25