2015-07-02 15 views
5

Bu nesneyi denetlerken sorun yaşıyorum Birden çok .to.have.property ifadesini zincirlemek için yapmam gereken bir şey var mı? Sonuncusu, son .to.have.property'dan bir sonrakine döndürdüğüme inanıyorum.Nesnenin birden çok özelliğe sahip olup olmadığını sınama

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) 

Ben bir nesneyi kontrol etmek için bu chai-subset gibi bir şey kullanabilirsiniz görünüyor. Bunları birlikte zincirlemenin bir yolu yok mu? Bunu yapmaktan nefret ediyorum.

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

Bunun hakkında fazla bir şey bilmiyorum, ancak devam eden çalışma gibi görünüyor. Bkz. Https://github.com/chaijs/chai/issues/193 – Elyasin

cevap

2

sadece true/false döner ve herhangi bir arayüze sahip kendi fonksiyonunu inşa edebilir.

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 
İlgili konular