<p>cucumber-js ne trouve pas les définitions d'étape</p>

Créé le 11 janv. 2017  ·  48Commentaires  ·  Source: cucumber/cucumber-js

Salut, je suis un débutant qui essaie depuis des heures d'obtenir concombre-js pour trouver mes définitions de pas. J'ai trouvé cet exemple simple.

Dans features/foo.feature :

Feature: Foo
  Scenario: Bar
    Given FooBar

Dans features/step_definitions/step_defs.js :

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

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

J'obtiens ce résultat :

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

Commentaire le plus utile

Bien. Je crois que j'ai compris cela.

Lorsque vous utilisez une installation globale de concombre pour exécuter les tests de fonctionnalités, vous définissez toujours le code de support en exigeant l'installation locale de concombre. Le fait qu'il s'agisse de deux instances différentes n'entraîne le chargement d'aucune définition d'étape.

Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser l'installation locale pour exécuter la commande ? Je le fais sur mac en ajoutant "./node_modules/.bin" à mon chemin.

Je n'aime pas l'idée d'essayer de faire fonctionner cela en demandant à l'installation globale d'essayer d'exiger l'installation locale afin d'obtenir les définitions des étapes. Je n'aime pas non plus l'installation globale car elle vous oblige à spécifier des éléments tels que la compilation de modules par leur chemin absolu.

Si cela est possible sous Windows, je préférerais simplement mettre à jour la documentation pour mentionner que cela ne peut pas être utilisé comme une installation globale.

Tous les 48 commentaires

Je sais que cucumber-js trouve le fichier de définitions d'étapes, car lorsque j'y injecte une erreur de syntaxe, cucumber-js signale correctement l'erreur.

Quelle version de cucumber-js utilisez-vous ?

Il dit 2.0.0-rc.6

Également un débutant et ayant le même problème avec la même version de cucumber.js
Je suivais un autre tutoriel mais je suis bloqué à ce stade.

/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 retourne

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

Un fichier world.js n'a pas été inclus à ce stade.

@dunlop-ben, veuillez consulter le journal des modifications sur la différence entre les versions 1.0 et 2.0 candidates. La façon de définir les étapes a changé et votre exemple semble utiliser la syntaxe 1.0.

@jeffmath rien ne me semble mal. Nous avons des tests de fonctionnalités qui vérifient que quelque chose comme votre exemple simple fonctionne. Reproduire sur un mac, cela fonctionne comme prévu pour moi. Quelle version de nœud utilisez-vous ? Et d'après les chemins, il semble que vous soyez sur une machine Windows, est-ce correct?

@charlierudolph - merci. J'ai examiné cela et essayé quelques exemples différents avec un résultat similaire. J'ai également essayé d'utiliser la définition des fonctionnalités et des étapes ici : http://cucumber.github.io/cucumber-js/

J'ai l'impression qu'il me manque une étape et/ou des fichiers. S'il y a un endroit où vous pouvez m'orienter, ce serait super. Je n'ai pas eu beaucoup de chance en lisant la documentation sur Github.

@charlierudolph Node 6.4.0 sur Windows 7

@charlierudolph J'ai un problème similaire. Je suis exactement https://github.com/cucumber/cucumber-js/blob/master/docs/nodejs_example.md et le problème persiste.

Ma configuration est

  • NUD 7.4.0
  • Système d'exploitation : Windows 10
  • Concombre 2.0.0 -rc.6

@jeffmath @TheAdamW désolé mais je n'ai pas de machine Windows et je ne peux donc pas vraiment le

Pour moi, cela fonctionne si j'écris ./node_modules/.bin/cucumberjs mais pas si j'écris uniquement le cucumberjs installé globalement (même version 2.0.0-rc.6 ).

Même erreur ici : il n'y a aucun moyen pour le concombre de trouver les définitions des étapes. Avoir la même structure de dossiers fonctionne sous Linux.

  • NŒUD. 4.4.0 & 4.6
  • Système d'exploitation : Windows 10
  • Concombre 2.0.0 -rc.6

Existe-t-il un moyen de forcer le chemin/dossier/modèle des définitions d'étapes ?
L'astuce de @MartinDelille n'a pas fonctionné pour moi.

Je suis soudainement confronté au même problème, le concombre exécutait bien les scripts jusqu'à aujourd'hui matin. Je n'ai aucune idée de ce qui ne va pas.

J'exécute la fonctionnalité par clic droit sur ruby ​​mine et à partir de la ligne de commande en utilisant la commande cucumber -r features/chatstep.feature j'obtiens le même résultat.

Quelqu'un peut-il aider s'il vous plait

Étant donné(/^Je lance "([^"]*)"$/) do |arg1|
en attente # Écrivez le code ici qui transforme la phrase ci-dessus en actions concrètes
finir

J'ai dû rétrograder à 1.3.1 pour que cela fonctionne.
Cela ne fonctionne même pas en centos.

Le 25 janvier 2017 à 21h32, "Mrityunjeyan S" [email protected] a écrit :

Je suis confronté au même problème tout d'un coup, le concombre était bien
l'exécution des scripts jusqu'à aujourd'hui matin. Je n'ai aucune idée de ce qui ne va pas
avec ça.

J'exécute la fonctionnalité par clic droit sur ruby ​​mine et à partir de la ligne de commande en utilisant
la commande concombre -r features/chatstep.feature j'obtiens le même résultat.

Quelqu'un peut-il aider s'il vous plait

-
Vous recevez ceci parce que vous avez commenté.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/cucumber/cucumber-js/issues/718#issuecomment-275224435 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ALjDKMNdggk1Gh-x_q3KRuvlpN5f_0cOks5rV7E9gaJpZM4LhJZO
.

@jbgraug : qu'as-tu rétrogradé ? Quelle était votre version précédente avant la rétrogradation

J'ai essayé avec RC 2.0.6 & RC 2.0.0. Je ne pouvais pas le faire fonctionner sous Linux ou
Windows car le concombre n'a pas pu trouver les définitions des étapes, même pas avec
l'option -r.

Le jeu. 26 janvier 2017 à 6h18, Mrityunjeyan S [email protected]
a écrit:

@jbgraug https://github.com/jbgraug : qu'as-tu rétrogradé ? Qu'était-ce qu'Ur
version précédente avant rétrogradation

-
Vous recevez ceci parce que vous avez été mentionné.
Répondez directement à cet e-mail, consultez-le sur GitHub
https://github.com/cucumber/cucumber-js/issues/718#issuecomment-275310070 ,
ou couper le fil
https://github.com/notifications/unsubscribe-auth/ALjDKGbyYXvsjlLv-dlz6bnHMfPK7t05ks5rWCypgaJpZM4LhJZO
.

@jbgraug Je suppose que le concombre a déprécié le gherkin fourni avec la version 2.0 ? J'installe actuellement 1.3.14, et il dit fetching gherkin que je n'ai jamais remarqué lors de l'installation des versions supérieures à 2.0

@reach2jeyan en fonction de votre ligne de commande et de vos extraits de test, je pense que vous parlez de cucumber-ruby . Bien que ces deux projets soient liés en essayant de mettre en œuvre le cadre du concombre pour leurs langues respectives, ils présentent un certain nombre de différences.

@charlierudolph Merci d'être intervenu. Mon mauvais, je n'avais en fait pas suivi les procédures de définition des étapes plus tôt, de plus, les versions concombre-ruby étaient toutes foirées. J'ai ensuite dû tout réinitialiser et tout recommencer.

Ça marche maintenant d'ailleurs !

@charlierudolph exactement ce que @MartinDelille a dit, fonctionne bien via npm -S avec ./node_modules/.bin/cucumber.js , mais pas via npm -g avec /usr/local/bin/cucumber.js , il trouve et exécute les étapes, mais les oublie en quelque sorte par la suite.

macOS + Node.js 7.5.0 + Cucumber.js 2.0.0-rc.7
windows specific étiquette

@kozhevnikov merci pour la mise à jour. Jusqu'à présent, tous les rapports avaient été sur Windows (et je n'avais pas pu recréer sur mon mac local avec l'installation locale) Difficile d'imaginer que l'installation globale est en quelque sorte différente, mais au moins maintenant je peux enquêter.

j'obtiens les mêmes problèmes sur Windows en utilisant l'invite de commande via cygwin, c'est peut-être le problème? J'ai même copié le code directement à partir de l'exemple.

Fonctionnalité : mathématiques simples
Pour faire des maths
En tant que développeur
je veux incrémenter des variables

Scénario : maths faciles
Étant donné une variable définie sur 1
Quand j'incrémente la variable de 1
Ensuite, la variable doit contenir 2

Aperçu du scénario : des choses beaucoup plus complexes
Étant donné une variable définie sur

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

Concombre.defineSupportCode(fonction(contexte) {
var setWorldConstructor = context.setWorldConstructor;
var Donné = contexte.Donné
var Quand = contexte.Quand
var Then = context.Then

///// Votre monde /////
//
// Appelez 'setWorldConstructor' avec votre monde personnalisé (facultatif)
//

var CustomWorld = function() {};

CustomWorld.prototype.variable = 0;

CustomWorld.prototype.setTo = function(nombre) {
this.variable = parseInt(nombre);
} ;

CustomWorld.prototype.incrementBy = function(nombre) {
this.variable += parseInt(nombre);
} ;

setWorldConstructor(CustomWorld);

///// Vos définitions d'étapes /////
//
// utilisez 'Donné', 'Quand' et 'Alors' pour déclarer les définitions d'étape
//

Étant donné(/^une variable définie sur (\d+)$/, function(nombre) {
this.setTo(nombre);
});

Quand(/^j'incrémente la variable de (\d+)$/, function(nombre) {
this.incrementBy(nombre);
});

Alors(/^la variable doit contenir (\d+)$/, function(number) {
if (this.variable != parseInt(nombre))
jeter une nouvelle erreur ('La variable doit contenir ' + nombre +
' mais il contient ' + this.variable + '.');
});
})

j'obtiens cette erreur "ReferenceError: Given n'est pas défini"
je lance cucumber.js et ~/node_modules/.bin/cucumber.js avec le nom de fichier spécifique et il renvoie toujours une erreur. Je peux exécuter du concombre avec ruby ​​sans problème, mais je n'arrive pas à faire fonctionner le concombre

Bien. Je crois que j'ai compris cela.

Lorsque vous utilisez une installation globale de concombre pour exécuter les tests de fonctionnalités, vous définissez toujours le code de support en exigeant l'installation locale de concombre. Le fait qu'il s'agisse de deux instances différentes n'entraîne le chargement d'aucune définition d'étape.

Y a-t-il une raison pour laquelle vous ne pouvez pas utiliser l'installation locale pour exécuter la commande ? Je le fais sur mac en ajoutant "./node_modules/.bin" à mon chemin.

Je n'aime pas l'idée d'essayer de faire fonctionner cela en demandant à l'installation globale d'essayer d'exiger l'installation locale afin d'obtenir les définitions des étapes. Je n'aime pas non plus l'installation globale car elle vous oblige à spécifier des éléments tels que la compilation de modules par leur chemin absolu.

Si cela est possible sous Windows, je préférerais simplement mettre à jour la documentation pour mentionner que cela ne peut pas être utilisé comme une installation globale.

Deux points mineurs concernant la suppression de l'installation globale :

  1. Tous les documents auraient besoin d'être mis à jour, et pas seulement les documents officiels, mais de nombreux autres frameworks populaires construits dessus. Je suivais quand je suis tombé sur cela et c'était frustrant de déboguer pour quelqu'un qui venait juste de commencer avec JavaScript/Node.js/Cucumber.js

  2. De nombreux IDE et plugins sont codés en dur pour pointer vers global. L'ajout d'une variable d'environnement en dehors du profil bash (c'est-à-dire le lancement de WebStorm via Spotlight) sur macOS est compliqué et change d'une version à l'autre.

Hmm. Nous pouvons ajouter une option CLI qui permet à l'utilisateur de spécifier où se trouve l'instance de concombre locale ? Nous pouvons avoir la valeur par défaut process.cwd() + /node_modules/cucumber qui devrait couvrir la plupart des cas.

@charlierudolph Après avoir signalé l'erreur à l'origine, j'ai réalisé que je devais de toute façon utiliser Cucumber-JVM, car le code que je devais tester était écrit en Scala.js. Mais la prochaine fois que j'aurai besoin de tester Javascript, votre solution de contournement semble facile à mettre en œuvre. Merci d'avoir cerné le problème.

Ce sera difficile, d'après ce que je comprends, Node a beaucoup de cas extrêmes , donc au minimum, il devrait traverser les parents jusqu'à ce qu'il trouve le package local ou atteigne la racine du lecteur, et je ne sais pas à quel point l'utilisation des dossiers globaux est populaire dans la communauté Node.

@jeffmath @kozhevnikov voici mes dernières réflexions à ce sujet

  1. Je suis d'accord avec l'option cli qui permet à l'utilisateur de spécifier le chemin d'accès au concombre local. S'il n'est pas fourni, il utilise l'instance exécutée.
  2. L'utilisation de cette option effectuerait une validation de version pour s'assurer que l'installation locale / globale est exactement la même version, sinon les choses pourraient ne pas fonctionner comme prévu. Si ce n'est pas le cas, une erreur s'affichera indiquant à l'utilisateur d'aligner les versions.
  3. Cette option serait immédiatement dépréciée et accompagnée d'un avertissement pour arrêter d'utiliser l'installation globale et utiliser à la place uniquement l'installation locale.
  4. Cette option sera supprimée dans la prochaine version majeure.

J'ai trouvé un problème similaire en essayant de créer une bibliothèque de tests courants. Mon idée est de réutiliser les tests sur différents projets.

J'ai construit un package de tests commun appelé _roi-functional-tests_ que j'aimerais utiliser dans d'autres projets. Jusqu'à présent, j'ai lié le package avec _npm link_, puis j'ai essayé de pointer le concombre vers les fonctionnalités de _roi-functional-tests_, quelque chose comme ceci :

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

Mais j'obtiens ceci :

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');
       });

Le concombre peut-il importer des définitions de l'extérieur du répertoire de travail ?

@jramcast oui. Mais vous auriez besoin d'utiliser le drapeau cli --require .

Déjà essayé d'utiliser le drapeau --require :

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

Mais j'obtiens le même résultat.

Il est possible que npm link empêche le concombre de trouver les définitions ?

J'ai donc fait le même test sans npm link . J'ai publié et installé le package et tout fonctionne correctement en appelant simplement :

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

Je suppose que, lors de la liaison du package, require charge le concombre installé dans le répertoire du package lié ( node_modules/roi-functional-tests/node_modules/cucumber ). Cependant, si _roi-functional-tests_ est installé, npm aplatit l'arbre de dépendances et utilise l'instance de concombre installée juste sous les node_modules du projet ( node_modules/cucumber )

Avoir le même problème.

Version concombre : "concombre": "^2.0.0-rc.9"
Version Windows : 10
Version de nœud : 6.10.3 LTS & 7.10

Ne fonctionne pas dans l'IDE ou l'instance globale de concombre, ne trouve jamais les étapes même si elles sont implémentées correctement.

Si j'appelle le cucumber.js depuis le répertoire node_modules du projet, cela fonctionne.

Quelqu'un a-t-il des suggestions sur la façon de résoudre ce problème?

Cela se produit également sur MacOS Sierra 10.12.4
Noeud version 7.10

Je suis revenu à la version 1.3.0 de Cucumber, fonctionne bien maintenant en l'appelant via cmd en utilisant l'instance globale ET fonctionne dans IDE.

Salut @charlierudolph ,
Je suis dans la prochaine étape. (Déplacé du numéro 60 à ici)
J'exécute uniquement avec une instance locale, mais mes définitions d'étape ne sont pas reconnues lors de l'exécution du fichier de fonctionnalités
image
Le fichier de fonctionnalité et les fichiers de définition d'étape sont au bon endroit (capture d'écran ci-jointe)
Pourquoi ma définition de pas n'est-elle pas identifiée ?

J'avais une référence de concombre aux versions 1.X dans package-lock.json
"wdio-concombre-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="
    },

J'ai changé ces deux versions en 2,3,1
Ma version de nœud est 8.0.0
Mais la définition de l'étape n'est toujours pas reconnue
Une idée?

@vvedachalam

Si vous utilisez webdriverIO avec son lanceur de test plutôt qu'en mode autonome, vous DEVEZ utiliser la version 1.x de cucumber-js, de préférence 1.3.3 par opposition à 2.x car le lanceur de test ne prend PAS en charge la nouvelle version et une nouvelle façon de mettre en œuvre les définitions des étapes.

Je suis revenu à l'ancien [email protected] car j'utilise le testeur qui est requis pour le modèle d'objet de page et je

@GeeChao
Merci pour la réponse. Je suis revenu et j'ai exécuté le test toujours La définition de l'étape n'est pas reconnue

Lorsque j'ai essayé la commande avec -r , j'obtiens une erreur de syntaxe dans le fichier de fonctionnalités ...
C:/webdriverio-test/node_modules/.bin/cucumber-js -r features/customer-validation.feature

C:\webdriverio-testfeatures\client-validation. caractéristique : 2
En tant que propriétaire
^^

SyntaxError: Identifiant inattendu
à createScript (vm.js:74:10)
à Object.runInThisContext (vm.js:116:10)
à Module._compile (module.js:533:28)
à Object.Module._extensions..js (module.js:580:10)
à Module.load (module.js:503:32)
à tryModuleLoad (module.js:466:12)
à Function.Module._load (module.js:458:3)
à Module.require (module.js:513:17)
au besoin (interne/module.js:11:18)
à C:\webdriverio-test\node_modules\cucumberlib\cliindex.js:135:16
à Array.forEach (natif)
à Cli.getSupportCodeLibrary (C:\webdriverio-test\node_modules\cucumberlib\cliindex.js:134:24)
à Cli.(C:\webdriverio-test\node_modules\cucumberlib\cliindex.js:144:39)
sur Generator.next ()
à Generator.tryCatcher (C:\webdriverio-test\node_modules\bluebird\js\release\util.js:16:23)
à PromiseSpawn._promiseFulfilled (C:\webdriverio-test\node_modules\bluebird\js\release\generators.js:97:49)

@vvedachalam Pourriez-vous s'il vous plaît créer et transmettre ceci à votre référentiel afin que je puisse le reproduire?

@GeeChao
Jetez un coup d'oeil s'il vous plait
https://github.com/vvedachalam/Ruffer-Test

@vvedachalam

Déplacez votre dossier step_definitions dans votre dossier de fonctionnalités et il commencera à fonctionner et à reconnaître les définitions d'étape. Le seul problème qui se pose après est que l'emplacement de votre fichier txtdetails.txt est incorrect.

@GeeChao
ahh, sry je n'ai pas poussé ce changement.
Si vous voyez ma capture d'écran ci-dessus, la définition de l'étape se trouve uniquement dans le dossier des fonctionnalités.
J'espère que le contenu sera :
Contenu = fs.readFileSync('../../txndetails.txt', 'utf8');

Alors pourquoi je ne parviens pas à coller la définition de l'étape au fichier de fonctionnalités dans mon local ?
Ma configuration n'est-elle pas correcte ?

@vvedachalam

Ça marche pour moi.

La seule chose que j'ai faite a été de déplacer step_definitions dans le répertoire des fonctionnalités

aussi j'ai fait un npm install [email protected] --save-dev

puis a exécuté node_modules/cucumber/bin/cucumber.js features/

@GeeChao Tout a bien fonctionné. J'ai créé une boucle For dans l'instruction Then qui a créé le problème. Est-il possible d'utiliser la boucle For dans la définition d'étape ?
Je ne veux pas utiliser l'exemple car je dois exécuter l'étape Then en fonction des données d'un fichier texte (test piloté par les données)
Je sais que cette question n'est pas liée à ce sujet, mais je me suis juste demandé si je pouvais obtenir de l'aide.

@GeeChao Ok, encore une fois, c'est mon erreur stupide. La variable de bouclage n'a pas été définie correctement (oubli de comparer la longueur). Merci encore pour votre soutien

Pour moi, en tant que débutant, l'erreur a été causée par le passage d'une chaîne plutôt que d'une expression régulière dans les étapes ;

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

plutôt que

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

Erreur simple, mais, espérons-le, utile à quelqu'un d'autre qui débute.

@vvedachalam Avez-vous

@ sancy2017 Je suis passé à l'outil TestCafe de WDIO. Je ne pourrai donc peut-être pas vous donner la solution immédiatement. Dites-moi quel est exactement le problème auquel vous êtes confronté

La solution simple pour cette erreur est npm install [email protected] --save-dev
puis lancez votre test ..npm test

J'ai rencontré le même problème "Les définitions des étapes de concombre n'étaient pas reconnues". Changer le nom du répertoire de "steps" à "step_definitions" a fonctionné pour moi.

Je vois que la plupart des gens ont des définitions de pas dans le répertoire des fonctionnalités, je pense qu'une meilleure pratique consiste à avoir la mise en œuvre des étapes dans un répertoire séparé, c'est-à-dire src/step_definitions au lieu de conserver les étapes dans le répertoire des fonctionnalités.

Cette page vous a été utile?
0 / 5 - 0 notes