2017-03-29 4 views
0

Ich bin neu auf Winkelmesser-Gurke. Ich versuche, unten Schrittdefinition von Winkelmesser conf.js auszuführen.Winkelmesser: Warum Gurkenschritte als ausgeführt vor der eigentlichen Ausführung gezeigt

this.Given(/^I go to sparqHomePage$/, function (callback) { 

    homepage.goToHomePage() 
    homepage.login(data[0].UserName,data[0].Password).then(callback); 

}); 

this.Then(/^I create a process$/, function() { 

    homepage.clickDesign(); 
    homepage.clickFlowDesigner(); 
    console.log(params.flow.procName + ' '+ params.flow.procDesc); 
    designPage.createNewProc(params.flow.procName, params.flow.procDesc); 

}); 

this.Then(/^I should see process is saved in db$/, function (callback) { 

    var sql = "select * from process where name = ?"; 
    sql = mysql.format(sql, params.flow.procName); 
    console.log(sql); 

    dbConn.query(sql, function(err, rows, fields){ 

     if(!err) { 
      procDbObj = rows; 
      console.log(rows); 
      expect(procDbObj[0].name).to.eventually.equal(params.flow.procName); 
      expect(procDbObj[0].description).to.eventually.equal(params.flow.procDesc).and.notify(callback); 
     } 
    }); 
}); 

Sobald ich die Ausführung zu starten, wurde das Konsolenprotokoll zeigt, Feature-Dateiausführung abgeschlossen, aber die eigentliche Ausführung noch nicht abgeschlossen ist.

In meinem dritten Schritt mache ich eine Db-Validierung basierend auf den Schritten von Schritt 1 und Schritt 2. Als Gurke versucht, alle Schritte vor dem Abschluss der realen Ausführung mit Browser auszuführen, scheitert mein 3. Test immer.

Wie kann ich die Gurke auf die Ausführung der Schrittausführung warten lassen, bevor ich mit dem nächsten Schritt fortfahre.

+0

Duplizieren von http://stackoverflow.com/questions/38405184/protractor-cucumber-bdd-tests-show -pass-vor der Ausführung –

Antwort

0
homepage.goToHomePage() 
homepage.login(data[0].UserName,data[0].Password).then(callback); 

Ich bin nicht sicher genau das, was in der ersten Zeile geschieht aber ich nehme an, das ist geht ein Klicken zu tun, müssen Sie, dass ein Versprechen zurückzukehren und neu schreiben, es wie

homepage.goToHomePage().then(()=>{ 
    homepage.login(data[0].UserName,data[0].Password).then(callback); 
}) 

und dann für den Rest des Codes dieses Muster folgen, wie ich das gleiche Problem

überall sehen
1

Du homepage.goToHomePage() und homepage.login(data[0].UserName,data[0].Password).then(callback); aufrufen. Sind beide Methoden richtige Versprechungen, die korrekt behandelt werden? Es sieht jetzt so aus, als würde es beide Methoden aufrufen, aber eine direkte callback geben, bevor das Versprechen gelöst wird.

Als Ross erwähnt, auch die Versprechen Kette kann, aber zuerst sicher sein, die Versprechungen richtig

bearbeiten behandelt werden:

Als Ross erwähnt, auch die Versprechen Kette kann, aber Stellen Sie zuerst sicher, dass die Versprechen richtig gehandhabt werden.

Sie können auch das Versprechen anstelle des Rückrufs zurückzukehren, verwenden Sie es so wie diese

this.Given(/^I go to sparqHomePage$/, function() { 
    homepage.goToHomePage(); 
    return homepage.login(data[0].UserName,data[0].Password); 
}); 
Verwandte Themen