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);