2016-06-06 5 views
5

में चर जोड़ना मेरे पास कुछ तार हैं जिन्हें मैंने प्रोटैक्टर/जैस्मीन/कोणीयजेएस का उपयोग करके निकाला है और पूर्णांक में परिवर्तित किया है। अब मैं इन्हें एक साथ जोड़ने और उम्मीदवार बयान में तुलना करने की कोशिश कर रहा हूं। लेकिन मुझे ऐसा करने में कुछ वादा त्रुटियां मिल रही हैं।अपेक्षित बयान

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

मुझे निम्नलिखित वादे त्रुटियां मिल रही हैं। मैंने सोचा था कि चूंकि वादे पहले ही संतुष्ट हो चुके थे और नीचे दिए गए मायने रखता है (41, 7, 14 और 20) कि मैं नीचे 3 (reulst1-3) जोड़ सकता हूं और परिणाम 0 की तुलना कर सकता हूं जो परिणाम 1-3 है । मेरे पास इन वादों के साथ समय है क्योंकि मैं इसके लिए नया हूं और उन्हें बहुत अच्छी तरह समझ नहीं पा रहा हूं।

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

उत्तर

4

आप वादों को एक साथ जोड़ने के लिए, वास्तविक हल नहीं मान की कोशिश कर रहे हैं।

इस मामले में, मुझे लगता है कि protractor.promise.all() का उपयोग करके सभी वादों उम्मीद बनाने के लिए आवश्यक, एक ही बार में हल करने का समाधान होगा में:

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

और, सरल करने के लिए, आप में कर सकते हैं spread() the resolved values " फिर "समारोह तर्क:

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

नोट q के विपरीत, protractor.promiseनहीं है,अंतर्निर्मित और आपके पास एक कस्टम होना चाहिए।

+0

धन्यवाद! यह काम किया। –

+0

बहुत बढ़िया, जानकारी के लिए धन्यवाद। –

2

मैं .map का प्रयोग करेंगे यह सरल और प्रभावी रखने के लिए:

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