2013-07-09 72 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

要點記住這裏找到更多的例子是關於引用類型。