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

Jest教程:如何测试函数是否修改了传入参数

如何用Jest测试changeFooBarToOne函数是否修改对象属性?

没问题,我来帮你补全这个Jest测试的断言逻辑。首先得明确,测试的核心是先执行目标函数,再验证修改后的结果,这里有两种常用且靠谱的写法:

方法一:直接验证单个属性值

这种方式最直接,因为我们只关心bar属性的变化:

describe('changeFooBarToOne', () => {
  it('modifies the bar property value to 1', () => {
    const foo = { bar: 0 };
    // 第一步:调用要测试的函数,传入我们定义的foo对象
    changeFooBarToOne(foo);
    // 第二步:断言foo的bar属性值严格等于1
    expect(foo.bar).toBe(1);
  })
})

方法二:验证整个对象的匹配度

如果你需要确保对象的整体结构和值都符合预期(比如后续可能给foo加其他属性时),可以用toEqual来递归比对:

describe('changeFooBarToOne', () => {
  it('modifies the bar property value to 1', () => {
    const foo = { bar: 0 };
    changeFooBarToOne(foo);
    // 断言整个对象和预期的{ bar: 1 }完全匹配
    expect(foo).toEqual({ bar: 1 });
  })
})

小提醒

  • 别忘记调用changeFooBarToOne(foo)!如果跳过这一步,foo.bar还是初始的0,测试肯定会失败。
  • toBe和toEqual的区别:toBe是严格相等(类似===),适合单个原始值的验证;toEqual会深度比对对象的每个属性,更适合复杂对象的验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:48:28