问题
Chai has a nice way to assert if an Array includes a certain element
expect([1,2,3]).to.include(2);
What I would like is something similar, given an Array of Objects:
expect([{a:1},{b:2}]).to.include({b:2});
Is this possible?
回答1:
Take a look at the Chai Things plugin, that does what you want:
[{a:1},{b:2}].should.include.something.that.deep.equals({b:2})
回答2:
Here is an alternative and non order dependent approach for collections:
array
expect([1, 2, 3]).to.include.members([3, 2, 1])
You can also use this with a deep
flag for comparison of objects:
array of objects
expect([{ id: 1 }]).to.deep.include.members([{ id: 1 }]);
object
expect({foo: 'bar', width: 190, height: 90}).to.include({ height: 90, width: 190 })
回答3:
You can use deep method for the array of objects.
expect([{a:1},{b:2}]).to.deep.include({b:2}); //It will pass
You can find more examples using deep method here: http://chaijs.com/api/bdd/#method_deep
The main point to remember here is about reference types.
来源:https://stackoverflow.com/questions/17558518/mocha-chai-assert-that-object-is-included-in-an-array-of-objects