Mocha,Chai:断言Object包含在一个对象数组中

mck*_*mck 15 javascript testing mocha.js chai

如果一个Array包含某个元素,Chai有一个很好的断言方法

expect([1,2,3]).to.include(2);
Run Code Online (Sandbox Code Playgroud)

给定一个对象数组,我想要的是类似的东西:

expect([{a:1},{b:2}]).to.include({b:2});
Run Code Online (Sandbox Code Playgroud)

这可能吗?

And*_*rle 18

看看Chai Things插件,它可以满足您的需求:

[{a:1},{b:2}].should.include.something.that.deep.equals({b:2})
Run Code Online (Sandbox Code Playgroud)


lfe*_*445 12

以下是集合的替代和非顺序依赖方法:

排列

expect([1, 2, 3]).to.include.members([3, 2, 1])
Run Code Online (Sandbox Code Playgroud)

您还可以使用此deep标志来比较对象:

对象数组

expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]);
Run Code Online (Sandbox Code Playgroud)

宾语

expect({foo: 'bar', width: 190, height: 90}).to.include({ height: 90, width: 190 })
Run Code Online (Sandbox Code Playgroud)


小智 8

您可以对对象数组使用deep方法。

expect([{a:1},{b:2}]).to.deep.include({b:2});   //It will pass
Run Code Online (Sandbox Code Playgroud)

您可以在此处找到更多使用深度方法的示例:http : //chaijs.com/api/bdd/#method_deep

这里要记住的要点是关于引用类型。