Mocha, Chai: утверждать, что объект включен в массив объектов

Chai имеет хороший способ утверждать, что в массив входит определенный элемент

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

Что бы я хотел, это нечто похожее, учитывая массив объектов:

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

Возможно ли это?

Ответ 1

Взгляните на плагин Chai Things, который делает то, что вы хотите:

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

Ответ 2

Вот альтернативный и не зависящий от порядка подход для коллекций:

массив

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

Ответ 3

Вы можете использовать глубокий метод для массива объектов.

ожидать ([{a: 1}, {b: 2}]). to.deep.include({b: 2});//Он пройдет

Вы можете найти больше примеров, используя глубокий метод Здесь

Главное здесь вспомнить о типах ссылок.