32

Chai 有一个很好的方法来断言数组是否包含某个元素

expect([1,2,3]).to.include(2);

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

expect([{a:1},{b:2}]).to.include({b:2});

这可能吗?

4

3 回答 3

32

这是集合的另一种非顺序依赖方法:

大批

expect([1, 2, 3]).to.include.members([3, 2, 1])

您还可以将其与deep标志一起使用以比较对象:

对象数组

expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]);

目的

expect({foo: 'bar', width: 190, height: 90}).to.include({ height: 90, width: 190 })
于 2016-10-25T18:59:29.023 回答
25

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

[{a:1},{b:2}].should.include.something.that.deep.equals({b:2})
于 2013-07-10T06:47:13.870 回答
24

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

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

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

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

于 2017-11-13T08:16:24.890 回答