2016-05-19 20 views
0

Ich begann gerade mit GurkenJS, Schluck und Winkelmesser für eine eckige App zu arbeiten und bemerkte, glücklicherweise, als alle meine Schritte passierten, dass, wenn Sie nicht übergeben und den 'Callback'-Parameter in der Schrittdefinition verwenden, gurkJs nicht wissen, wann dieser Schritt abgeschlossen ist und andere Schritte überspringen und sie alle als ‚bestanden‘ markierenCucumberJs überspringen Schritt Definition - vielleicht Callback letzten Parameter in Schritt Definition?

Unten ist ein Beispiel aus dem cucumberJs doc: https://github.com/cucumber/cucumber-js

Beispiel 1:

this.Given(/^I am on the Cucumber.js GitHub repository$/, function (callback) { 
    // Express the regexp above with the code you wish you had. 
    // `this` is set to a World instance. 
    // i.e. you may use this.browser to execute the step: 

    this.visit('https://github.com/cucumber/cucumber-js', callback); 

    // 

die Rückruf ist bestanden ed() zu besuchen, so dass, wenn der fertige Job, der nächste Schritt kann // von Gurke

ausgeführt werden. });

Beispiel 2:

this.When(/^I go to the README file$/, function (callback) { 
    // Express the regexp above with the code you wish you had. 

Anruf Rückruf() am Ende // des Schrittes oder Rückruf (null, 'offen'), wenn der Schritt noch nicht implementiert ist:

callback(null, 'pending'); 
    }); 

Beispiel 3:

this.Then(/^I should see "(.*)" as the page title$/, function (title, callback) { 
    // matching groups are passed as parameters to the step definition 

    var pageTitle = this.browser.text('title'); 
    if (title === pageTitle) { 
     callback(); 
    } else { 
     callback(new Error("Expected to be on page with title " + title)); 
    } 
    }); 

};

Ich verstehe, Sie haben 2 Möglichkeiten hier: a. Entweder geben Sie ein Versprechen zurück und geben den Rückruf nicht weiter ODER b. Sie geben den Callback-Parameter ein und rufen ihn immer dann auf, wenn die Schrittdefinition abgeschlossen ist, damit cucumberJs zurückkehrt und zum nächsten Schritt oder nächsten Szenario übergeht.

Allerdings habe ich beide oben versucht und immer noch in eine seltsame Situation, in der die beiden oberen Szenarien NORMAL wie erwartet funktionieren, aber das dritte und vierte Szenario innerhalb der gleichen Feature-Datei wird übersprungen und alle bestanden.

Gibt es etwas Besonderes über Features mit mehr als 2 Szenarien zu beachten? Solange ich < = 2 Szenarien pro Feature-Dateien habe, funktioniert alles gut, aber in dem Moment, in dem ich ein drittes Szenario für diese Feature-Datei hatte, wird dieses dritte Szenario ignoriert und übersprungen.

Irgendwelche Ideen?

Antwort

0

Ohne Ihre tatsächlichen Schritte zu sehen kann ich nicht sicher sagen, aber es klingt wie ein asynchrones Problem oder ich sage es, ein Syntaxfehler im Szenario. Haben Sie versucht, die Reihenfolge der Szenarien zu ändern, um zu sehen, ob dies Auswirkungen hat?

+0

Hallo findlayc, ja, das ist die seltsame Sache, die Reihenfolge des Szenarios zu ändern funktioniert, ohne das tatsächliche Szenario zu ändern - es gibt keinen Syntaxfehler im Szenario, weil das gleiche Szenario nicht nur durch Umordnen der Reihenfolge funktionieren würde. – pelican

+0

Klingt wie ein asynchrones Problem – findlayc