2013-07-09 58 views
11

柴有一个很好的方式来断言如果阵列包括某些元素摩卡,柴:断言对象包括在对象数组

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

我想什么是类似的东西,因为数组对象:

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

这可能吗?

+0

你试过了吗?文件似乎暗示它会起作用。 http://chaijs.com/api/bdd/#include – Schleis

+0

是的,我试过 - 这些例子只显示如何测试某个键是否存在,而不是实际值(或整个对象) – mck

回答

18

看看的Chai Things plugin,那你想要做什么:

[{a:1},{b:2}].should.include.something.that.deep.equals({b:2}) 
+0

正是我所在寻找:+1:谢谢! – mck

+0

,如果你有检查[{a:1},{a:2}]。contains(['a'])你会怎么做 – PirateApp

7

这里是收藏的替代和非依赖顺序的方法:

阵列

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 }) 
0

的可以使用为对象数组深方法。

expect([{a:1},{b:2}])。to.deep.include({b:2}); //它会传递

可以使用深法Here

要点记住这里找到更多的例子是关于引用类型。