<p>gurke-js findet keine Schrittdefinitionen</p>

Erstellt am 11. Jan. 2017  ·  48Kommentare  ·  Quelle: cucumber/cucumber-js

Hallo, ich bin ein Neuling, der seit Stunden versucht, Gurken-Js dazu zu bringen, meine Schrittdefinitionen zu finden. Ich habe mir dieses einfache Beispiel ausgedacht.

In features/foo.feature:

Feature: Foo
  Scenario: Bar
    Given FooBar

In features/step_definitions/step_defs.js:

var {defineSupportCode} = require('cucumber');

defineSupportCode(function({Given}) {
    Given('FooBar', function () {
      return 'pending';
    });    
});

Ich bekomme dieses Ergebnis:

Feature: Foo

  Scenario: Bar
  ? Given FooBar

Warnings:

1) Scenario: Bar - features\foo.feature:2
   Step: Given FooBar - features\foo.feature:3
   Message:
     Undefined. Implement with the following snippet:

       Given('FooBar', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

1 scenario (1 undefined)
1 step (1 undefined)
0m00.000s
help wanted

Hilfreichster Kommentar

In Ordung. Ich glaube, ich habe das herausgefunden.

Wenn Sie eine globale Installation von cucumber verwenden, um die Funktionstests auszuführen, definieren Sie immer noch Supportcode, indem Sie die lokale Installation von cucumber erfordern. Die Tatsache, dass es sich um zwei verschiedene Instanzen handelt, führt dazu, dass keine Schrittdefinitionen geladen werden.

Gibt es einen Grund, warum Sie die lokale Installation nicht zum Ausführen des Befehls verwenden können? Ich mache dies auf einem Mac, indem ich "./node_modules/.bin" zu meinem Pfad hinzufüge.

Ich mag die Idee nicht, dies zum Laufen zu bringen, indem die globale Installation versucht, die lokale Installation zu erfordern, um die Schrittdefinitionen zu erhalten. Ich mag auch die globale Installation nicht, da Sie Dinge wie Kompilierungsmodule durch ihren absoluten Pfad angeben müssen.

Wenn dies unter Windows möglich ist, würde ich es vorziehen, einfach die Dokumentation zu aktualisieren, um zu erwähnen, dass dies nicht als globale Installation verwendet werden kann.

Alle 48 Kommentare

Ich weiß, dass cucumber-js die Schrittdefinitionsdatei findet, denn wenn ich einen Syntaxfehler einfüge, meldet cucumber-js den Fehler korrekt.

Welche Version von gurken-js verwendest du?

Es sagt 2.0.0-rc.6

Auch ein Neuling und habe das gleiche Problem mit der gleichen Version von cucumber.js
Ich habe ein anderes Tutorial verfolgt, bin aber an dieser Stelle stecken geblieben.

/features/add-item.feature

Feature: Shopper can add an item to their Grocery List
  As a grocery shopper
  I want to add an item to my grocery list
  So that I can remember to buy that item at the grocery store

  Scenario: Item added to grocery list
    Given I have an empty grocery list
    When I add an item to the list
    Then The grocery list contains a single item

  Scenario: Item accessible from grocery list
    Given I have an empty grocery list
    When I add an item to the list
    Then I can access that item from the grocery list`

/features/step_definitions/add-item.steps.js
'use strict';

module.exports = function() {

    Given('I have an empty grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });


    When('I add an item to the list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

    Then('The grocery list contains a single item', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

    Then('I can access that item from the grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

}

$ node_modules/.bin/cucumber-js zurück

Feature: Shopper can add an item to their Grocery List

    As a grocery shopper
    I want to add an item to my grocery list
    So that I can remember to buy that item at the grocery store

  Scenario: Item added to grocery list
  ? Given I have an empty grocery list
  ? When I add an item to the list
  ? Then The grocery list contains a single item

  Scenario: Item accessible from grocery list
  ? Given I have an empty grocery list
  ? When I add an item to the list
  ? Then I can access that item from the grocery list

Warnings:

1) Scenario: Item added to grocery list - features/add-item.feature:6
   Step: Given I have an empty grocery list - features/add-item.feature:7
   Message:
     Undefined. Implement with the following snippet:

       Given('I have an empty grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

2) Scenario: Item added to grocery list - features/add-item.feature:6
   Step: When I add an item to the list - features/add-item.feature:8
   Message:
     Undefined. Implement with the following snippet:

       When('I add an item to the list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

3) Scenario: Item added to grocery list - features/add-item.feature:6
   Step: Then The grocery list contains a single item - features/add-item.feature:9
   Message:
     Undefined. Implement with the following snippet:

       Then('The grocery list contains a single item', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

4) Scenario: Item accessible from grocery list - features/add-item.feature:11
   Step: Given I have an empty grocery list - features/add-item.feature:12
   Message:
     Undefined. Implement with the following snippet:

       Given('I have an empty grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

5) Scenario: Item accessible from grocery list - features/add-item.feature:11
   Step: When I add an item to the list - features/add-item.feature:13
   Message:
     Undefined. Implement with the following snippet:

       When('I add an item to the list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

6) Scenario: Item accessible from grocery list - features/add-item.feature:11
   Step: Then I can access that item from the grocery list - features/add-item.feature:14
   Message:
     Undefined. Implement with the following snippet:

       Then('I can access that item from the grocery list', function (callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

2 scenarios (2 undefined)
6 steps (6 undefined)
0m00.000s

Eine world.js-Datei ist an dieser Stelle nicht enthalten.

@dunlop-ben Bitte lesen Sie das Changelog über den Unterschied zwischen 1.0 und den 2.0 Release Candidates. Die Methode zum Definieren von Schritten hat sich geändert, und Ihr Beispiel scheint die 1.0-Syntax zu verwenden.

@jeffmath für mich sieht nichts falsch aus. Wir haben Funktionstests, die überprüfen, ob etwas wie Ihr einfaches Beispiel funktioniert. Bei der Wiedergabe auf einem Mac funktioniert es wie erwartet für mich. Welche Node-Version verwendest du? Und aus den Pfaden geht hervor, dass Sie sich auf einem Windows-Rechner befinden, ist das richtig?

@charlierudolph - danke. Ich habe mir das angeschaut und ein paar verschiedene Beispiele mit einem ähnlichen Ergebnis ausprobiert. Ich habe auch versucht, die Funktions- und Schrittdefinition hier zu verwenden: http://cucumber.github.io/cucumber-js/

Ich habe das Gefühl, dass mir ein Schritt und/oder Dateien fehlen müssen. Wenn du mich irgendwo anweisen kannst, wäre das super. Ich hatte nicht viel Glück, die Dokumentation auf Github durchzulesen.

@charlierudolph Node 6.4.0 unter Windows 7

@charlierudolph Ich habe ein ähnliches Problem. Ich folge https://github.com/cucumber/cucumber-js/blob/master/docs/nodejs_example.md genau und das Problem tritt immer noch auf.

Mein Setup ist

  • KNOTEN 7.4.0
  • Betriebssystem: Windows 10
  • Gurke 2.0.0 -rc.6

@jeffmath @TheAdamW Entschuldigung, aber ich habe keinen Windows-Rechner und kann dies daher nicht wirklich aufspüren. Wir verwenden appveyor, um unsere Tests auf Windows-Rechnern durchzuführen, und ich weiß nicht, was der Unterschied wäre. Könnte einer von euch bitte versuchen, sich damit auseinanderzusetzen? Ich freue mich über jede Hilfe, die ich kann

Bei mir funktioniert es, wenn ich ./node_modules/.bin/cucumberjs schreibe, aber nicht, wenn ich nur das global installierte cucumberjs schreibe (gleiche Version 2.0.0-rc.6 ).

Gleicher Fehler hier: Gurken können die Schrittdefinitionen nicht finden. Die gleiche Ordnerstruktur funktioniert unter Linux.

  • KNOTEN. 4.4.0 & 4.6
  • Betriebssystem: Windows 10
  • Gurke 2.0.0 -rc.6

Gibt es eine Möglichkeit, den Pfad / Ordner / das Muster der Schrittdefinitionen zu erzwingen?
Übrigens hat der Trick von

Ich stehe plötzlich vor dem gleichen Problem, die Gurke hat die Skripte bis heute Morgen gut ausgeführt. Ich habe keine Ahnung, was daran falsch ist.

Ich führe die Funktion aus, indem ich mit der rechten Maustaste auf Ruby Mine klicke und von der Befehlszeile aus den Befehl cucumber -r features/chatstep.feature erhalte ich das gleiche Ergebnis.

Kann mir bitte jemand helfen

Gegeben(/^I starte "([^"]*)"$/) do |arg1|
ausstehend # Schreiben Sie hier Code, der den obigen Satz in konkrete Aktionen umwandelt
Ende

Ich musste auf 1.3.1 downgraden, damit es funktioniert.
Es funktioniert nicht einmal in Centos.

Am 25. Januar 2017 um 21:32 Uhr schrieb "Mrityunjeyan S" [email protected] :

Ich stehe plötzlich vor dem gleichen Problem, die Gurke war in Ordnung
Ausführung der Skripte bis heute Morgen. Ich habe keine Ahnung was los ist
damit.

Ich führe die Funktion aus, indem ich mit der rechten Maustaste auf Ruby Mine und über die Befehlszeile mit klicke
mit dem Befehl gurke -r features/chatstep.feature erhalte ich das gleiche Ergebnis.

Kann mir bitte jemand helfen


Sie erhalten dies, weil Sie einen Kommentar abgegeben haben.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/cucumber/cucumber-js/issues/718#issuecomment-275224435 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/ALjDKMNdggk1Gh-x_q3KRuvlpN5f_0cOks5rV7E9gaJpZM4LhJZO
.

@jbgraug : Was hast du herabgestuft? Was war deine vorherige Version vor dem Downgrade?

Ich habe es mit RC 2.0.6 & RC 2.0.0 versucht. Ich konnte es unter Linux nicht zum Laufen bringen oder
Windows als Gurke konnte die Schrittdefinitionen nicht finden, auch nicht mit
die Option -r.

Am Do, 26. Januar 2017 um 6:18 Uhr, Mrityunjeyan S [email protected]
schrieb:

@jbgraug https://github.com/jbgraug : Was hast du herabgestuft? Was war Ur
vorherige Version vor dem Downgrade


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/cucumber/cucumber-js/issues/718#issuecomment-275310070 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/ALjDKGbyYXvsjlLv-dlz6bnHMfPK7t05ks5rWCypgaJpZM4LhJZO
.

@jbgraug Ich denke, die Gurke hat das mit ihr gebündelte gherkin aus Version 2.0 veraltet? Ich installiere derzeit 1.3.14 und es steht fetching gherkin was mir

@reach2jeyan basierend auf Ihrer Befehlszeile und Testschnipseln Ich glaube, Sie sprechen von Gurken-Ruby . Obwohl diese beiden Projekte bei dem Versuch, das Gurken-Framework für ihre jeweiligen Sprachen zu implementieren, miteinander verwandt sind, weisen sie eine Reihe von Unterschieden auf.

@charlierudolph Danke fürs Nachteil , ich hatte die Schrittdefinitionsverfahren früher nicht befolgt, und die Gurken-Rubin-Versionen waren alle durcheinander. Ich musste dann alles zurücksetzen und wieder von vorne beginnen.

Es funktioniert jetzt übrigens!

@charlierudolph genau das, was @MartinDelille gesagt hat, funktioniert gut über npm -S mit ./node_modules/.bin/cucumber.js , aber nicht über npm -g mit /usr/local/bin/cucumber.js , es findet und führt die Schritte aus, aber vergisst sie danach irgendwie.

macOS + Node.js 7.5.0 + Cucumber.js 2.0.0-rc.7
windows specific Label ist irreführend

@kozhevnikov danke für das Update. Alle Berichte waren bis jetzt auf einem Windows (und ich war nicht in der Lage, mit der lokalen Installation auf meinem lokalen Mac neu zu erstellen) Schwer vorstellbar, dass die globale Installation irgendwie anders ist, aber zumindest kann ich jetzt nachforschen.

Ich bekomme die gleichen Probleme unter Windows mit der Eingabeaufforderung über Cygwin, vielleicht ist das das Problem? Ich habe sogar den Code direkt aus dem Beispiel kopiert.

Feature: Einfache Mathematik
Um Mathe zu machen
Als ein Entwickler
Ich möchte Variablen inkrementieren

Szenario: einfache Mathematik
Gegeben eine Variable, die auf 1 . gesetzt ist
Wenn ich die Variable um 1 erhöhe
Dann sollte die Variable 2 . enthalten

Szenario-Übersicht: viel komplexere Dinge
Gegeben eine Variable, die auf gesetzt ist

Examples:
  | var | increment | result |
  | 100 |         5 |    105 |
  |  99 |      1234 |   1333 |
  |  12 |         5 |     18 |

Gurke.defineSupportCode(Funktion(Kontext) {
var setWorldConstructor = context.setWorldConstructor;
var Gegeben = Kontext.Gegeben
var When = context.When
var Then = Kontext.Then

///// Deine Welt /////
//
// Rufe 'setWorldConstructor' mit deiner benutzerdefinierten Welt auf (optional)
//

var CustomWorld = function() {};

CustomWorld.prototype.variable = 0;

CustomWorld.prototype.setTo = Funktion(Nummer) {
this.variable = parseInt(Zahl);
};

CustomWorld.prototype.incrementBy = Funktion(Zahl) {
this.variable += parseInt(Zahl);
};

setWorldConstructor(CustomWorld);

///// Ihre Schrittdefinitionen /////
//
// benutze 'Given', 'When' und 'Then' um Schrittdefinitionen zu deklarieren
//

Gegeben(/^eine Variable, die auf (\d+)$/ gesetzt ist, Funktion(Zahl) {
this.setTo(Zahl);
});

When(/^I inkrementiere die Variable um (\d+)$/, function(number) {
this.incrementBy(Zahl);
});

Then(/^die Variable sollte (\d+)$/, function(number) {
if (diese.variable != parseInt(Zahl))
throw new Error('Variable sollte ' + Zahl + . enthalten
' aber es enthält ' + this.variable + '.');
});
})

Ich erhalte diese Fehlermeldung "ReferenceError: Given is not defined"
Ich führe cucumber.js und ~/node_modules/.bin/cucumber.js mit dem spezifischen Dateinamen aus und es wird immer ein Fehler ausgegeben. Ich kann Gurke ohne Probleme mit Ruby ausführen, aber ich kann Gurken nicht zum Laufen bringen

In Ordung. Ich glaube, ich habe das herausgefunden.

Wenn Sie eine globale Installation von cucumber verwenden, um die Funktionstests auszuführen, definieren Sie immer noch Supportcode, indem Sie die lokale Installation von cucumber erfordern. Die Tatsache, dass es sich um zwei verschiedene Instanzen handelt, führt dazu, dass keine Schrittdefinitionen geladen werden.

Gibt es einen Grund, warum Sie die lokale Installation nicht zum Ausführen des Befehls verwenden können? Ich mache dies auf einem Mac, indem ich "./node_modules/.bin" zu meinem Pfad hinzufüge.

Ich mag die Idee nicht, dies zum Laufen zu bringen, indem die globale Installation versucht, die lokale Installation zu erfordern, um die Schrittdefinitionen zu erhalten. Ich mag auch die globale Installation nicht, da Sie Dinge wie Kompilierungsmodule durch ihren absoluten Pfad angeben müssen.

Wenn dies unter Windows möglich ist, würde ich es vorziehen, einfach die Dokumentation zu aktualisieren, um zu erwähnen, dass dies nicht als globale Installation verwendet werden kann.

Zwei kleinere Punkte zum Entfernen der globalen Installation:

  1. Alle Dokumente müssten aktualisiert werden, und nicht nur die offiziellen, sondern viele andere beliebte Frameworks, die darauf aufbauen. Ich habe mitgemacht, als ich darauf gestoßen bin, und es war frustrierend für jemanden, der gerade erst mit JavaScript/Node.js/Cucumber.js angefangen hat

  2. Viele IDEs und Plugins sind hartcodiert, um auf global zu verweisen. Auch das Hinzufügen einer Umgebungsvariablen außerhalb des Bash-Profils (dh das Starten von WebStorm über Spotlight) unter macOS ist kompliziert und ändert sich von Version zu Version.

Hmm. Wir können eine CLI-Option hinzufügen, mit der der Benutzer angeben kann, wo sich die lokale Gurkeninstanz befindet. Wir können den Standardwert process.cwd() + /node_modules/cucumber was die meisten Fälle abdecken sollte.

@charlierudolph Nachdem ich den Fehler ursprünglich gemeldet hatte, wurde mir klar, dass ich sowieso Cucumber-JVM verwenden musste, da der Code, den ich testen musste, in Scala.js geschrieben wurde. Aber wenn ich das nächste Mal Javascript testen muss, klingt Ihre Problemumgehung einfach zu implementieren. Vielen Dank, dass Sie das Problem herausgefunden haben.

Es wird schwierig sein, soweit ich weiß, hat Node viele Randfälle , also müsste es zumindest die Eltern durchlaufen, bis es das lokale Paket findet oder das Laufwerk root erreicht, und ich weiß nicht, wie beliebt die Verwendung globaler Ordner ist in der Node-Community.

@jeffmath @kozhevnikov hier sind meine aktualisierten Gedanken dazu

  1. Mir geht es gut mit der cli-Option, die es dem Benutzer ermöglicht, den Pfad zur lokalen Gurke anzugeben. Wenn nicht angegeben, verwendet es die ausgeführte Instanz.
  2. Die Verwendung dieser Option würde eine Versionsvalidierung durchführen, um sicherzustellen, dass die lokale / globale Installation genau dieselbe Version ist, da sonst die Dinge möglicherweise nicht wie erwartet funktionieren. Wenn nicht, wird ein Fehler ausgegeben, der den Benutzer auffordert, die Versionen abzugleichen.
  3. Diese Option würde sofort veraltet sein und eine Warnung enthalten, die Verwendung der globalen Installation einzustellen und stattdessen ausschließlich die lokale Installation zu verwenden.
  4. Diese Option wird in der nächsten Hauptversion entfernt.

Ich habe ein ähnliches Problem gefunden, als ich versucht habe, eine Bibliothek mit allgemeinen Tests zu erstellen. Meine Idee ist es, Tests in verschiedenen Projekten wiederzuverwenden.

Ich habe ein allgemeines Testpaket namens _roi-functional-tests_ erstellt, das ich in anderen Projekten verwenden möchte. Bisher habe ich das Paket mit _npm link_ verbunden und versuchen dann zu Punkt Gurke zu den Merkmalen in _roi Funktional tests_, etwa wie folgt:

./node_modules/.bin/cucumberjs ./node_modules/roi-functional-tests/features

Aber ich bekomme das:

Warnings:

1) Scenario: Curl request - node_modules/roi-functional-tests/features/home.feature:3
   Step: Given I make curl request to "/" - node_modules/roi-functional-tests/features/home.feature:4
   Message:
     Undefined. Implement with the following snippet:

       Given('I make curl request to {arg1:stringInDoubleQuotes}', function (arg1, callback) {
         // Write code here that turns the phrase above into concrete actions
         callback(null, 'pending');
       });

Kann Gurke Definitionen von außerhalb des Arbeitsverzeichnisses importieren?

@jramcast ja. Sie müssten jedoch das cli-Flag --require verwenden.

Bereits versucht, das Flag --require verwenden:

./node_modules/.bin/cucumberjs --require ./node_modules/roi-functional-tests/features ./node_modules/roi-functional-tests/features

Aber ich bekomme das gleiche Ergebnis.

Kann es sein, dass npm link dazu führt, dass Gurken die Definitionen nicht finden?

Also habe ich den gleichen Test ohne npm link . Ich habe das Paket veröffentlicht und installiert und alles funktioniert gut, indem ich einfach anrufe:

./node_modules/.bin/cucumberjs ./node_modules/roi-functional-tests/features

Ich vermute, dass require beim Verknüpfen des Pakets die Gurke lädt, die im verknüpften Paketverzeichnis installiert ist ( node_modules/roi-functional-tests/node_modules/cucumber ). Wenn jedoch _roi-functional-tests_ installiert ist, reduziert npm den Abhängigkeitsbaum und verwendet die direkt unter den node_modules des Projekts installierte Gurkeninstanz ( node_modules/cucumber )

Habe das gleiche Problem.

Gurkenversion: "gurke": "^2.0.0-rc.9"
Windows-Version: 10
Knotenversion: 6.10.3 LTS & 7.10

Funktioniert nicht in der IDE oder globalen Instanz von cucumber, findet die Schritte nie, obwohl sie korrekt implementiert wurden.

Wenn ich cucumber.js aus dem node_modules-Verzeichnis des Projekts aufrufe, funktioniert es.

Hat jemand Vorschläge zur Behebung dieses Problems?

Dies geschieht auch unter MacOS Sierra 10.12.4
Knotenversion 7.10

Ging zurück zu Cucumber Version 1.3.0, funktioniert jetzt einwandfrei, indem es über cmd mit globaler Instanz aufgerufen wird UND in der IDE funktioniert.

Hallo @charlierudolph ,
Ich bin im nächsten Schritt. (Von Ausgabe 60 bis hierher verschoben)
Ich führe nur mit einer lokalen Instanz aus, aber meine Schrittdefinitionen werden beim Ausführen der Feature-Datei nicht erkannt
image
Die Feature-Datei und die Step-Definition-Dateien befinden sich an der richtigen Stelle (Screenshot im Anhang)
Warum wird meine Schrittdefinition nicht erkannt?

Ich hatte einen Cucumber-Verweis auf 1.X-Versionen in package-lock.json
"wdio-gurken-framework":

    "cucumber": {
      "version": "1.3.3",
      "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-1.3.3.tgz",
      "integrity": "sha1-Za+2Xy+T9y2teN8qterPFGCf7C8=",
      "dev": true
    },

"webdriverio-cucumber-js":  

   "cucumber": {
      "version": "1.2.2",
      "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-1.2.2.tgz",
      "integrity": "sha1-KEZJEf8arfwOZjTXY2q69mHGaJI="
    },

Ich habe diese beiden Versionen in 2,3,1 geändert
Meine Knotenversion ist 8.0.0
Aber immer noch wird die Schrittdefinition nicht erkannt
Irgendeine Idee?

@vvedachalam

Wenn Sie webdriverIO mit seinem Test Runner und nicht im Standalone-Modus verwenden, müssen Sie cucumber-js Version 1.x verwenden, vorzugsweise 1.3.3 statt 2.x, da der Test Runner die neue Version NICHT unterstützt und neue Art und Weise, wie die Schrittdefinitionen implementiert werden.

Ich bin zum alten Cucumber @ 1.3.3 zurückgekehrt, da ich den Test Runner verwende, der für das Seitenobjektmodell erforderlich ist und sicherstellt, dass alle Befehle synchron ausgeführt werden.

@GeeChao
Danke für die Antwort. Ich habe den Test zurückgesetzt und trotzdem ausgeführt Schrittdefinition wird nicht erkannt

Als ich den Befehl mit -r ausprobiert habe, erhalte ich einen Syntex-Fehler in der Feature-Datei ...
C:/webdriverio-test/node_modules/.bin/cucumber-js -r features/customer-validation.feature

C:\webdriverio-testfeatures\customer-validation. Funktion: 2
Als Eigentümer
^^

SyntaxError: Unerwarteter Bezeichner
bei createScript (vm.js:74:10)
bei Object.runInThisContext (vm.js:116:10)
bei Module._compile (module.js:533:28)
bei Object.Module._extensions..js (module.js:580:10)
bei Module.load (module.js:503:32)
bei tryModuleLoad (module.js:466:12)
bei Function.Module._load (module.js:458:3)
bei Module.require (module.js:513:17)
bei erfordern (intern/module.js:11:18)
unter C:\webdriverio-test\node_modules\cucumberlib\cliindex.js:135:16
bei Array.forEach (nativ)
unter Cli.getSupportCodeLibrary (C:\webdriverio-test\node_modules\cucumberlib\cliindex.js:134:24)
bei Kl.(C:\webdriverio-test\node_modules\cucumberlib\cliindex.js:144:39)
bei Generator.nächste ()
at Generator.tryCatcher (C:\webdriverio-test\node_modules\bluebird\js\release\util.js:16:23)
at PromiseSpawn._promiseFulfilled (C:\webdriverio-test\node_modules\bluebird\js\release\generators.js:97:49)

@vvedachalam Könnten Sie dies bitte erstellen und in Ihr Repository übertragen, damit ich es replizieren kann?

@GeeChao
Bitte guck dir das an
https://github.com/vvedachalam/Ruffer-Test

@vvedachalam

Verschieben Sie Ihren step_definitions-Ordner in Ihren Features-Ordner und er beginnt zu arbeiten und erkennt die Schrittdefinitionen. Das einzige Problem, das danach geworfen wird, ist, dass der Speicherort der Datei txtdetails.txt falsch ist.

@GeeChao
ahh, sry, ich habe diese Änderung nicht vorangetrieben.
Wenn Sie meinen obigen Screenshot sehen, befindet sich die Schrittdefinition nur im Ordner "Features".
Hoffnungsinhalt wird sein:
Inhalt = fs.readFileSync('../../txndetails.txt', 'utf8');

Warum kann ich dann die Schrittdefinition nicht in die Feature-Datei in meiner lokalen Datei einfügen?
Stimmt mein Setup nicht?

@vvedachalam

Für mich geht das.

Das einzige, was ich getan habe, war step_definitions in das Features-Verzeichnis zu verschieben

Außerdem habe ich eine npm-Installation [email protected] durchgeführt --save-dev

dann habe node_modules/cucumber/bin/cucumber.js features/ ausgeführt.

@GeeChao Alles hat gut funktioniert. Ich habe eine For-Schleife in der Then-Anweisung erstellt, die das Problem verursacht hat. Ist es möglich, die For-Schleife innerhalb der Schrittdefinition zu verwenden?
Ich möchte kein Beispiel verwenden, da ich den Schritt Then basierend auf Textdateidaten ausführen muss (datengesteuerter Test).
Ich weiß, dass diese Frage nicht mit diesem Thema zu tun hat, aber ich dachte nur, ob ich Hilfe bekommen kann.

@GeeChao Ok, wieder ist es mein dummer Fehler. Schleifenvariable wurde nicht richtig gesetzt (Längenvergleich vergessen). Danke nochmal für deine Unterstützung

Für mich als Neuling wurde der Fehler dadurch verursacht, dass ich eine Zeichenfolge anstelle einer Regex in die Schritte übergab;

Then('I log in as (.*)', ...)

eher, als

Then(/I log in as (.*)', ...)

Einfacher Fehler, aber hoffentlich nützlich für jemand anderen, der gerade erst anfängt.

@vvedachalam Hast du das

@sancy2017 Ich bin von WDIO zum TestCafe-Tool gewechselt. Daher kann ich Ihnen die Lösung möglicherweise nicht sofort mitteilen. Lassen Sie mich wissen, was genau das Problem ist, mit dem Sie konfrontiert sind

Die einfache Lösung für diesen Fehler ist npm install [email protected] --save-dev
dann führe deinen test aus ..npm test

Ich hatte das gleiche Problem "Gurkenschritt-Definitionen wurden nicht erkannt". Das Ändern des Verzeichnisnamens von "steps" in "step_definitions" hat bei mir funktioniert.

Ich sehe, dass die meisten Leute step_definitions im Verzeichnis features haben. Ich glaube, es ist eine bessere Vorgehensweise, die Schritte in einem separaten Verzeichnis, dh src/step_definitions, zu implementieren, anstatt die Schritte im Verzeichnis Features zu behalten.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen