Mein Ziel
Ich versuche, eine skalierbare Struktur von Features und Schritt Definitionen für eine große Anwendung und mein erster Schuss versucht step_definition Dateien Features erstellen zu verknüpfen, so dass ich das gleiche Schrittmuster für verschiedene Schrittdefinitionen verwenden könnte .Wie kann ich die Schrittdefinitionsdatei für jede Feature-Datei in gurke-js angeben?
My-Code
zeige ich mein aktuelles Beispiel:
Meine Ordnerstruktur:
/features/sample.feature
/features/example.feature
/features/step_definitions/sample_steps.js
/features/step_definitions/example_steps.js
/features/step_definitions/common/common_steps.js
In meinem sample.feature
ich habe:
Scenario: Launching Cucumber
Given I have some step definitions
When I check some step definition with parameter "any"
Then I should see all green "sample"
In meinem example.feature
ich habe:
Scenario: Launching Cucumber
Given I have some step definitions
When I check some step definition with parameter "any"
Then I should see all green "example"
Die Given
und When
Schritte sind bei /common/common_steps.js
Datei definiert und funktioniert gut.
Der Then
Schritt ist sowohl auf sample_steps.js
als auch auf example_steps.js
aber anders definiert.
In meinem sample_steps.js ich habe:
Then('I should see all green {stringInDoubleQuotes}', (arg) => {
if (arg !== 'sample') {
throw 'I should see all green when the argument is "sample"';
}
return;
});
Und schließlich in meinem example_steps.js ich habe:
Then('I should see all green {stringInDoubleQuotes}', (arg) => {
if (arg !== 'example') {
throw 'I should see all green when the argument is "example"';
}
return;
});
Der Fehler
Mein Hauptziel zu haben ist alles grün hier, aber natürlich funktioniert es nicht und ich bekomme diesen offensichtlichen Fehler:
Multiple step definitions match:
I should see all green {stringInDoubleQuotes} - features\step_definitions\example_steps.js:6
I should see all green {stringInDoubleQuotes} - features\step_definitions\sample_steps.js:6
Cucumber-JVM
Ich weiß, dass in Gurken-jvm wir ein glue
Attribut angeben, die Funktionen und step_definitions verbindet und es ist genau das, was ich suche, aber in Gurken-js. Beispiel in Java:
@RunWith(Cucumber.class)
@Cucumber.Options(glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.sample" })
public class SampleFeature{
}
@RunWith(Cucumber.class)
@Cucumber.Options(glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.example" })
public class ExampleFeature{
}
Schließlich
Wie kann ich die gleiche wie cucumbr-jvm mit Gurken-js erreichen?
gut ... Ich möchte eine super generische Methode vermeiden, die Argumente erhält, weil es den Schritt zu komplex macht. Ihre erste Option ist immer noch, was ich gerade mache. Aber es bringt mich einige technische Wörter in die Feature-Datei, um Schritte zu unterscheiden ... :( – robsonrosa
Siehe meine Bearbeitung, es kann allgemein sein, aber würde tun, was Sie wollen, bis Gurke eine Möglichkeit gibt, den tatsächlichen Schritt zu einem Szenario zu kleben. –