Mocha, Chai: Assert that Object is included in an Array of Objects

a 夏天 提交于 2019-12-20 17:39:17

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!