众所周知,期待被笑话取代。一些预期的财产也会发生变化。其中之一就是知道包括的内容。你会在这里找到它:https://github.com/skovhus/jest-codemods/blob/master/src/transformers/expect.js
我的问题是当我尝试使用toContain以检查对象是否与另一个对象匹配时,它显示错误。但早些时候toInclude它只是一行代码。因此,作为toInclude的替代,我发现它不同,不完全一样。
这个数组运行正常。
expect([2,3,4]).toContain(4);

但是当我使用object时,会出现此错误
expect({
name : 'Adil',
age : 23
}).toContain({
age : 23
});

这是错误
Error: expect(object).toContain(value)
Expected object:
{"age": 23, "name": "Adil"}
To contain value:
{"age": 23}
答案 0 :(得分:2)
.toContain
适用于checking that an item is in an array
如果您想检查对象属性的值,那么您可以使用.toHaveProperty
- here are the docs
所以你的例子就是
expect({
name : 'Adil',
age : 23
}).toHaveProperty('age', 23);
...或者为了避免学习另一个匹配器,你可以这样做:
expect({
name : 'Adil',
age : 23
}.age).toBe(23);
答案 1 :(得分:1)
来自documentation(来自我的要点):
如果要检查项目是否在数组中,请使用
.toContain
。为了测试数组中的项目,这使用===,严格的相等性检查。.toContain
还可以检查字符串是否是另一个字符串的子字符串。
总而言之,它测试数组是否包含某些值,或者字符串是否包含给定的字符串。
要测试示例中的对象,可以使用:
expect({ name : 'Adil', age : 23 }).toHaveProperty('age', 23);
答案 2 :(得分:1)
当您想要检查数组中项目的存在时使用它。它类似于python' x in [1,2,3]
。请注意,它不会为您提供第一次出现的索引。它只会返回一个布尔值