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

Jest中toMatchObject匹配空对象的不符合预期行为咨询

关于Jest toMatchObject 匹配行为的解析

你遇到的问题核心是对Jest中toMatchObject方法的匹配逻辑理解有误,它的设计是部分匹配,而非严格全等匹配:

  • 当你用空对象{}作为匹配条件时,toMatchObject会检查被测试对象是否包含空对象的所有属性——而空对象没有任何属性需要满足,所以任何对象(包括带a、b属性的testingObject)都会通过这个测试,这是符合该方法设计逻辑的。
  • 第二个测试中,匹配对象包含c:3,而testingObject没有这个属性,所以用.not.toMatchObject时测试通过,这也符合部分匹配的规则:被测试对象不包含匹配对象的所有属性,所以反向断言成立。

如果你想要验证被测试对象严格等于空对象(没有任何额外属性),应该使用严格匹配的断言方法:

it('Should fail when object has properties but expected empty object', () => {
  const testingObject = { a: 1, b: 2 };

  expect(testingObject).toEqual({}); // 这个测试会失败,符合你的预期
});

也可以使用toStrictEqual,它会更严格地检查对象结构(比如原型链差异等),对于空对象的场景,效果和toEqual一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 03:06:23