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

Adi*_*ury 9 javascript node.js jestjs

众所周知,期望被笑话取代了。Expect 的一些属性也会发生变化。其中之一是 toContain,即所谓的 toInclude。您可以在这里找到它:https://github.com/skovhus/jest-codemods/blob/master/src/transformers/expect.js

我的问题是,当我尝试使用 toContain 来检查一个对象是否与另一个对象匹配时,它显示错误。但早期的 toIninclude 只是一行代码。因此,作为 toIninclude 的替代品,我发现它有所不同,而不是完全相同。

这个数组工作正常。

expect([2,3,4]).toContain(4);
Run Code Online (Sandbox Code Playgroud)

但是当我使用对象时,会出现此错误

 expect({
        name : 'Adil',
        age : 23
    }).toContain({
        age : 23
    });
Run Code Online (Sandbox Code Playgroud)

这是错误

Error: expect(object).toContain(value)
Expected object:

{"age": 23, "name": "Adil"}
To contain value:

{"age": 23}
Run Code Online (Sandbox Code Playgroud)

Bil*_*lly 9

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

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

所以你的例子是

expect({
    name : 'Adil',
    age : 23
}).toHaveProperty('age', 23);
Run Code Online (Sandbox Code Playgroud)

...或者为了避免学习另一个匹配器,你可以这样做:

expect({
    name : 'Adil',
    age : 23
}.age).toBe(23);
Run Code Online (Sandbox Code Playgroud)