toContain()的实际用途是什么?

大家都知道期待换成笑话。 预期的一些性质也会改变。 其中之一是被称为包括的内容。 你可以在这里find它: https : //github.com/skovhus/jest-codemods/blob/master/src/transformers/expect.js

我的问题是,当我试图使用toContain为了检查一个对象是否与另一个对象匹配,它显示我错误。 但是早些时候以包括它只是一个行代码。 所以作为替代包括我发现它不同,不完全相同。

这个数组工作正常。

expect([2,3,4]).toContain(4); 

但是当我用对象去,这个错误出现了

  expect({ name : 'Adil', age : 23 }).toContain({ age : 23 }); 

这是错误

 Error: expect(object).toContain(value) Expected object: {"age": 23, "name": "Adil"} To contain value: {"age": 23} 

.toContain用于检查项目是否在数组中

如果你想检查一个对象属性的值,那么你可以使用.toHaveProperty – 这里是文档

所以你的例子会

 expect({ name : 'Adil', age : 23 }).toHaveProperty('age', 23); 

…或避免学习另一个匹配器,你可以做:

 expect({ name : 'Adil', age : 23 }.age).toBe(23); 

当你想检查一个数组中的项目的存在时使用它。 它与x in [1,2,3] python的x in [1,2,3]类似。 请注意,它不会给你第一次出现的索引。 它将只返回一个布尔值

从文档 (我的亮点):

当你想检查一个项目是否在一个数组中时,使用.toContain 。 为了testing数组中的项目,这使用===,一个严格的相等性检查.toContain也可以检查一个string是否是另一个string的子string。

总而言之,它testing一个数组是否包含某个值,或者一个string是否包含给定的字符链。

要testing你的例子中的对象,你可以使用:

 expect({ name : 'Adil', age : 23 }).toHaveProperty('age', 23);