2015-12-27 5 views
6

Mein Winkelmesser conf.js warten, onPrepare Funktion, um eine HTTP-Anforderung machen muss, das so aussieht,Kraft Winkelmesser onPrepare die für async http Anfrage

onPrepare: function(done) { 
    request.get('http://pepper/sysid') 
     .end(function(err, resp){ 
     if(err || !resp.ok){ 
      log("there is an error " + err.message) 
      done() 
     }else{ 
      global.sysid = resp.sysid 
      done() 
     } 
     }) 

Es wirft Fehler wie done is not a function

Gibt es eine Andererseits kann ich den Callback innerhalb von onPrepare aufrufen, bevor meine Tests mit der Ausführung beginnen?

Antwort

8

onPrepare() kann optionally return a promise dass Winkelmesser würde lösen, bevor die Tests auszuführen beginnen:

onPrepare kann optional ein Versprechen zurückgeben, die Protractor für, bevor Sie fortfahren Ausführung warten. Dies kann verwendet werden, wenn die Vorbereitung irgendwelche asynchronen Aufrufe beinhaltet, z. Interaktion mit dem Browser. Andernfalls kann der Winkelmesser die Reihenfolge der Ausführung nicht garantieren und kann die Tests vor Abschluss der Vorbereitung starten .

einen Transporteur Make promise und senden Sie es ab onPrepare():

onPrepare: function() { 
    var defer = protractor.promise.defer(); 

    request.get('http://pepper/sysid').end(function(err, resp) { 
     if (err || !resp.ok) { 
      log("there is an error " + err.message); 
      defer.reject(resp); 
     } else { 
      global.sysid = resp.sysid; 
      defer.fulfill(resp); 
     } 
    }); 

    return defer.promise; 
},