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

时间:2017-10-14 09:12:46

标签: javascript node.js jest

众所周知,期待被笑话取代。一些预期的财产也会发生变化。其中之一就是知道包括的内容。你会在这里找到它: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}

3 个答案:

答案 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]。请注意,它不会为您提供第一次出现的索引。它只会返回一个布尔值