Cucumber-js: Comment utiliser la balise dans mon scénario de fonction Cucumber.js ?

Créé le 8 déc. 2015  ·  5Commentaires  ·  Source: cucumber/cucumber-js

Salut,

Comment connaître le scénario qui appelle ma fonction ? Comment utiliser les balises dans mon scénario de fonction ?

En fait j'ai un scénario :

Feature: create module feature
  As a admin
  I want to use create module

  <strong i="8">@createModule</strong>
  Given I am logged as 'ADMIN'
    And I am on "/admin/create"
   Then The "book_id" field should be empty

Je voudrais utiliser mon tag @createModule dans ma fonction Alors :

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (myModule === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

J'aimerais obtenir mon tag @createModule , pour spécifier le scénario appelé, ou autre alternative, j'aimerais savoir quels scénarios appellent ma fonction.

Commentaire le plus utile

Résolu :

J'ai ajouté :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

et ma fonction :

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

Tous les 5 commentaires

Les balises sont utilisées pour choisir les scénarios à exécuter lors de l'exécution de cucumber-js (voir le README). Actuellement, les étapes n'ont aucun moyen de savoir pour quel scénario elles sont actuellement exécutées. Toutes les étapes d'un scénario partageront une instance mondiale (accessible via this dans la définition de l'étape).

Résolu :

J'ai ajouté :

this.Before(function (scenario, callback) {
    var tags = scenario.getTags();

    this.current_module = tags[0].getName();

    callback();
});

et ma fonction :

this.Then(/^The "?([^"]*)"? field should be empty$/, function (el) {

    if (this.current_module === @createModule) {
        ...
    } else if {
        ...
    }

    return main_po.checkIsEmptyElement(this, el);
});

@jechazelle merci d'avoir posté votre solution J'ai besoin de la même fonctionnalité pour un cas d'utilisation différent :)

Dans concombre-js 3.2.1 je dois utiliser

Before({timeout: 20000}, async function(testCase) {
  this.tags = testCase.pickle.tags.map((tag) => tag.name);`
  ...
}

La raison pour laquelle je l'utilise est qu'une implémentation d'étape particulière échoue pour un sous-ensemble connu de scénarios. J'ai donc créé un ticket de défaut non critique dans notre système de suivi, étiqueté les scénarios défaillants avec le ticket #, puis ajouté la logique dans l'implémentation de l'étape pour renvoyer 'pending' si this.tags contient le numéro de ticket.

Cela permet à notre construction de revenir au vert, tandis que les pouvoirs en place décident s'ils veulent réparer le défaut ou non.

Ce fil a été automatiquement verrouillé puisqu'il n'y a eu aucune activité récente après sa fermeture. Veuillez ouvrir un nouveau problème pour les bogues associés.

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