Как я могу проверить, что проверка должна содержать несколько свойств с chai-things?

Я хочу проверить, что массив содержит объект в моих тестах мокко для моего приложения Node.js, и я знаю, что с Chai -Что я могу сделать:

[{ pet: 'cat' }, { pet: 'dog' }].should.include({ pet: 'cat' })

or

[{ pet: 'cat' }, { pet: 'dog' }].should.contain.a.thing.with.property('pet', 'cat')

но есть ли способ проверить, содержит ли несколько свойств, не зная всех свойств. Например, если бы у меня был массив:

var arr = [{ pet: 'cat', owner:1, id:1 }, { pet: 'cat', owner:2, id:2 },{ pet: 'dog', owner:1, id:3 }]

И я хотел проверить объект, содержащий { pet: 'cat', owner:1}. Я не знаю, какой идентификатор перед тестом, так как он будет сгенерирован случайным образом.

как я могу сделать это эффективно, предпочтительно с помощью chai, плагина chai или vanilla js, поскольку я не могу использовать другую структуру. Я просмотрел Chai-fuzzy, но не думаю, что это поможет мне понять


person jonnie    schedule 09.04.2015    source источник
comment
вы можете просто добавить 2 оператора, чтобы получить нужную вам логику? arr.should.contain.a.thing.with.property('pet', 'cat'); ... arr.should.contain.a.thing.with.property('owner', 1); Я бы зарегистрировал билет на github для chai-things и посмотрел, что они скажут.   -  person Justin Maat    schedule 14.04.2015


Ответы (1)


Насколько я понимаю, вы хотите отфильтровать массив объектов javascript. Вы можете использовать jquery api grep следующим образом.

filter = $.grep(arr, function (v) {
        return v.pet === "cat" && v.owner === 1;
});

Надеюсь, поможет....

person Mayank    schedule 09.04.2015
comment
извините, может быть, я не совсем ясно выразился в вопросе, но это javascript на стороне сервера, и я также сказал, что не могу использовать другой фреймворк, но приятно знать, что он существует - person jonnie; 09.04.2015