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
相关产品推荐
相关产品推荐

