2016-06-06 10 views
5

Mam kilka ciągów, które zostały wyodrębnione za pomocą kątomierz/jaśmin/kątowyJS i konwertowane na liczby całkowite. Próbuję teraz dodać je razem i porównać w oświadczeniu oczekującym. Ale dostaję przy tym pewne obietnice.Dodawanie zmiennych razem w oczekiwaniu na oświadczenie

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

Otrzymuję następujące błędy obietnicy. Pomyślałem, że skoro obietnice zostały już spełnione i poniższe liczby wydrukują (41, 7, 14 i 20), że mogę dodać dolne 3 (reulst1-3) razem i porównać z wynikiem0, co jest sumą wyniku1-3 . Mam czas na te obietnice, ponieważ jestem nowy w tym i nie bardzo rozumiem je bardzo dobrze.

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"}. 

Odpowiedz

4

Jesteś próbuje dodać obietnic razem, a nie rzeczywista rozwiązane wartości.

W tym przypadku, chciałbym rozwiązać ten pomocą protractor.promise.all() rozwiązać wszystkie obietnice potrzebne do oczekiwania, jednocześnie:

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

I, w celu uproszczenia, że ​​może spread() the resolved values na ty " następnie”argumenty funkcji:

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

zauważyć, że w przeciwieństwie do q, protractor.promise nie mają spread() wbudowany i musisz mieć niestandardowy.

+0

Dziękujemy! to działało. –

+0

Niesamowite, dziękuję za informację. –

2

użyłbym .map zachować to prosty i skuteczny:

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]); 
    }); 
Powiązane problemy