2016-06-06 17 views
5

Prosesçi/jasmine/angularJS kullanarak ayıkladığım ve tamsayılara dönüştürdüğüm bazı dizelerim var. Şimdi bunları bir araya getirmeye çalışıyorum ve bir beklenti tablosunda karşılaştırıyorum. Ama bunu yaparken bazı sözde hatalar alıyorum.Bekleyen deyiminde değişkenleri birlikte ekleme

var result0 = element.all(by.binding('Inboxes.Inbox.Count')).first().getText().then(parseFloat); 
    result0.then((value) => console.log("count: ", value)); 

    var result1 = element.all(by.binding('InboxItem.Count')).get(0).getText().then(parseFloat); 
    result1.then((value) => console.log("count: ", value)); 

    var result2 = element.all(by.binding('InboxItem.Count')).get(1).getText().then(parseFloat); 
    result2.then((value) => console.log("count: ", value)); 

    var result3 = element.all(by.binding('InboxItem.Count')).get(2).getText().then(parseFloat); 
    result3.then((value) => console.log("count: ", value)).then(expect(result1 + result2 + result3).toEqual(result0)); 

    //compare badge counts to Inbox badge count 
    expect(result1 + result2 + result3).toEqual(result0); 
    }); 
}); 
}); 

Aşağıdaki söz hatalarını alıyorum. Ben sözlerin zaten yerine getirildiğini ve aşağıdaki sayıların çıktısını aldığımı düşündüm (41, 7, 14 ve 20), alt 3'ü (reulst1-3) birlikte ekleyebildim ve sonuç1'in toplamı olan sonucu1 ile karşılaştırabiliyorum. . Bu sözlerle yeni bir zaman geçiriyorum çünkü bu konuda yeniyim ve onları çok iyi anlamıyorum.

Started 
count: 41 
count: 7 
count: 14 
count: 20 
F 

Failures: 
1) Workflow Application When selecting Alerts panel should expand the Inbox panel and Postings 
    Message: 
    Expected 'ManagedPromise::859 {[[PromiseStatus]]: "pending"}ManagedPromise::896 {[[PromiseStatus]]: "pending"}ManagedPromise::933 {[[PromiseStatus]]: "pending"}' to equal ManagedPromise::822 {[[PromiseStatus]]: "pending"}. 

cevap

4

Sen çözülmesi değerler gerçek değil, birlikte sözlerini eklemeye çalışıyorlar. Bu durumda, ben protractor.promise.all() kullanarak seferde beklenti hale getirmek için gerekli tüm sözleri, çözmek için bu çözecek yılında

:

protractor.promise.all([result0, result1, result2, result3]).then(function (values) { 
    expect(values[1] + values[2] + values[3]).toEqual(values[0]); 
}); 

Ve bu basitleştirmek için, içine spread() the resolved values can " Daha sonra" fonksiyonu argümanlar:

protractor.promise.all([result0, result1, result2, result3]).then(spread(function (value0, value1, value2, value3) { 
    expect(value1 + value2 + value3).toEqual(value0); 
})); 

Not q aksine protractor.promiseyok,yerleşik ve özel bir tane var.

+0

teşekkür ederiz! Bu çalıştı. –

+0

Harika, bilgi için teşekkürler. –

2

Ben basit ve verimli tutmak için .map kullanırsınız:

var total = element(by.binding('Inboxes.Inbox.Count')) 
    .getText() 
    .then(parseInt); 

element.all(by.binding('InboxItem.Count'))  // get the elements 
    .map((e, i) => e.getText().then(parseInt)) // parse each text 
    .then((values) => {       // assert the values 
     expect(total).toEqual(values[0] + values[1] + values[2]); 
    }); 
İlgili konular