2013-11-26 10 views
5

में एक वादा कैसे परिवर्तित करें मैं प्रोटैक्टर का उपयोग करके ई 2 टे परीक्षण लिख रहा हूं और मैं यह जांचना चाहता हूं कि पृष्ठ पर कुछ मान सही तरीके से गणना की गई हैं या नहीं। इस तरह कुछ बहुत आसान:प्रोटोटाटर में एक फ्लोट

var var1 = element(by.binding('var1')); 
var var2 = element(by.binding('var2')); 
var var3 = element(by.binding('var3')); 

expect(parseFloat(var1.getText())).toEqual(parseFloat(var2.getText()) + 
     parseFloat(var2.getText())); 

हालांकि, क्योंकि var1, var2 और var3 सभी वादे हैं, यह काम नहीं करता है।

क्या वचन वस्तु को तारों में बदलने का कोई तरीका है ताकि मैं उपरोक्त काम कर सकूं?

उत्तर

8

चूंकि वादे असीमित हैं, इसलिए आप उन्हें एक सिंक्रोनस फ़ंक्शन के साथ एक फ्लोट में परिवर्तित नहीं कर सकते हैं। तो, आपको उन्हें हल करने की आवश्यकता होगी। चलाता है/WaitsFor जैस्मीन से प्रक्रियाओं का उपयोग करके के बारे में क्या ?, मुझे लगता है थोड़ा और मानक होने के लिए:

element(by.binding('var1').getText().then(function(text1) { 
    element(by.binding('var2').getText().then(function (text2) { 
    element(by.binding('var3').getText().then(function (text3) { 
     expect(parseFloat(text1)).toEqual(parseFloat(text2) + parseFloat(text3)); 
    }); 
    }); 
}); 
0

@jmr: आप इस तरह कर सकता है

var var1, var2, var2 = null; 

runs(function() { 
    element(by.binding('var1')).getText().then(function(value) { var1 = value; }); 
    element(by.binding('var2')).getText().then(function(value) { var2 = value; }); 
    element(by.binding('var3')).getText().then(function(value) { var3 = value; }); 
}); 

waitsFor(function(){ 
    return var1 !== null && var2 !== null && var3 !== null; 
}, 'The values were not filled', 750); 

runs(function() { 
    expect(parseFloat(var1.getText())). 
    toEqual(parseFloat(var2.getText()) + parseFloat(var2.getText())); 
}); 
+0

में अच्छा लगता है। किसी ने कोशिश की? – ErichBSchulz

+0

@ एरिचबशूलज़ - क्या आपने इसे आजमाया? काम किया? – Brad8118

1

मैं अपने परीक्षण लिखने निम्नलिखित पैटर्न के साथ:

var data = {}; 
element(by.binding('var1')).getText().then(function(value) { data.var1text = value; }); 
element(by.binding('var2')).getText().then(function(value) { data.var2text = value; }); 
element(by.binding('var3')).getText().then(function(value) { data.var3text = value; }); 
expect(parseFloat(data.var1text)).toEqual(parseFloat(data.var2text) + parseFloat(data.var3text)); 

पैटर्न अपेक्षाकृत छोटा और स्पष्ट है, और वादे से सभी मूल्य आगे विश्लेषण के लिए उपलब्ध हैं।

+1

यदि .getText() में एक समय लगता है (कॉल के बीच उदा .click() के साथ प्रयास करें), उम्मीद() फ़ंक्शन खाली मान प्राप्त करेंगे। तो यह एक बुरा उदाहरण है। –

0
var var1 = element(by.binding('var1')); 
var var2 = element(by.binding('var2')); 
var var3 = element(by.binding('var3')); 

var promises = [ 
    var1.getText(), 
    var2.getText(), 
    var3.getText() 
]; 

protractor.promise.all(promises).then(function(results) { 
    expect(parseFloat(results[0])) 
    .toEqual(parseFloat(results[1]) + parseFloat(results[2])); 
} 

Selenium API पर मिला। नोट: webdriver.particularFunction के माध्यम से इन दस्तावेज़ों को कॉल करने के लिए protractor.particularFunction के माध्यम से protractor.js

संबंधित मुद्दे