2013-07-09 28 views
11

Chai có một cách tốt đẹp để khẳng định nếu một mảng bao gồm một yếu tố nào đóMocha, Chai: khẳng định đối tượng được bao gồm trong một mảng các đối tượng

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

Những gì tôi muốn là một cái gì đó tương tự, đưa ra một mảng của Đối tượng:

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

Điều này có thể?

+0

Bạn đã thử chưa? Tài liệu dường như ngụ ý rằng nó sẽ hoạt động. http://chaijs.com/api/bdd/#include – Schleis

+0

Vâng tôi đã thử - những ví dụ này chỉ cho thấy làm thế nào để kiểm tra nếu một khóa nhất định tồn tại, không phải là giá trị thực tế (hoặc toàn bộ đối tượng cho rằng vấn đề) – mck

Trả lời

18

Hãy nhìn vào các Chai Things plugin, mà những gì bạn muốn:

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

chính xác những gì tôi đã tìm kiếm: +1: cảm ơn! – mck

+0

và nếu bạn đã kiểm tra [{a: 1}, {a: 2}]. Chứa [['a']) bạn sẽ làm như thế nào – PirateApp

7

Đây là một sự thay thế và phương pháp phụ thuộc trật tự không cho bộ sưu tập:

mảng

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

Bạn có thể cũng sử dụng thẻ này với cờ deep để so sánh các đối tượng:

mảng các đối tượng

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

đối tượng

expect({foo: 'bar', width: 190, height: 90}).to.include({ height: 90, width: 190 }) 
0

Bạn có thể sử dụng phương pháp sâu sắc đối với các mảng của các đối tượng.

mong đợi ([{a: 1}, {b: 2}]). To.deep.include ({b: 2}); // Nó sẽ vượt qua

Bạn có thể tìm thêm ví dụ về sử dụng phương pháp sâu Here

Điểm chính cần nhớ ở đây là về các loại tài liệu tham khảo.

Các vấn đề liên quan