2015-07-02 2 views
5

У меня проблема с проверкой этого объекта, есть что-то, что мне нужно сделать, чтобы связать несколько операторов .to.have.property? Я верю, что просто возвращаю результат из последних .to.have.property в следующий.Тестирование, если объект имеет несколько свойств

expect(shopify.formatRequestOptions("shop")) 
    .to.have.property('url', "https://"+settings.shop+"/admin/shop.json") 
    .to.have.property('method', "GET") 
    .to.have.deep.property('headers.X-Shopify-Access-Token', settings.accessToken) 

Кажется, я могу использовать что-то вроде этого chai-subset проверить объект. Не существует способа связать их вместе? Мне не хотелось бы этого делать.

var result = shopify.formatRequestOptions("shop") 
expect(result).to.have.property('url', "https://"+settings.shop+"/admin/shop.json") 
expect(result).to.have.property('method', "GET") 
expect(result).to.have.deep.property('headers.X-Shopify-Access-Token', settings.accessToken) 
+1

Я не знаю много об этом, но похоже, что это незавершенное производство. См. Ссылку https://github.com/chaijs/chai/issues/193 – Elyasin

ответ

2

Может создать свою собственную функцию, которая просто возвращает true/false и имеет какой-либо интерфейс.

let example = { 
    'name': 'thomas' 
} 

let hasAllProps = (obj, props) => { 
    let propsTrue = _.chain(props) 
    .map(prop => _.has(obj, prop)) 
    .without(false) 
    .value() 
    return (propsTrue.length === props.length) 
} 

console.log(hasAllProps(example, ['name'])) // true 
console.log(hasAllProps(example, ['age'])) // false 
Смежные вопросы