2017-02-14 2 views
0

Dies ist mehr ein JavaScript-Problem, aber es ist etwas, das versucht wird, für den Einsatz eines Progractor-Tests implementiert werden.Winkelmesserfunktion undefiniert?

//fileA.js 
element(by.id('page-element').getText().then(function() { 
    var currentPremium = fileB.getSixMonthPremium(); // calls the function in fileB.js 

    element(by.id('page-element').getText().then(function() { 
     console.log(currentPremium); // prints undefined 
     fileB.compareValue(currentPremium, ..., ...,); 
    }); 
}); 


//fileB.js 
this.getSixMonthPremium() = function() { 
    element(by.id('full-premium').isDisplayed().then(function(displayed) { 
     if (displayed) { 
      element(by.id('full-premium').getText().then(function(currentPremium) { 
       console.log('Current Premium - ' + currentPremium); // prints string of $XXX.xx 
       return currentPremium; //seems to be returning undefined? 
      }); 
     } 
    }); 
}); 

Beim Versuch, die Variable currentPremium zu verwenden, nachdem es von der Funktion Aufruf gibt, ist es immer nicht definiert. Was mache ich falsch?

Antwort

1

Willkommen bei der Verwendung von asynchronen Aufrufen mit Javascript!

Sie wollen ein Versprechen aus dem getSixMonthPremium() Anruf zurückgeben, dann weiterarbeiten, nachdem dieser Anruf zurückkommt.

this.getSixMonthPremium() = function() { 
    return new Promise(function(resolve,reject){ 
     element(by.id('full-premium').isDisplayed().then(function(displayed) { 
      if (displayed) { 
       element(by.id('full-premium').getText().then(function(currentPremium) { 
        console.log('Current Premium - ' + currentPremium); // prints string of $XXX.xx 
        resolve(currentPremium); //seems to be returning undefined? 
       }); 
      } 
     }); 
    }) 
}); 

dann werden Sie dieses Versprechen behandeln, indem so etwas wie die unten zu tun:

fileB.getSixMonthPremium().then(function(premium){ 
    ...handle premium 
}); 
+0

Dank! Ich wusste, dass es etwas Asynchrones war, aber ich fand nicht, was ich brauchte, um Google zu finden. Ich muss mir ein JavaScript-Buch besorgen oder ein paar gute Online-Sachen finden :) – DrZoo