Cucumber-js: 関数シナリオCucumber.jsでタグを使用するにはどうすればよいですか?

作成日 2015年12月08日  ·  5コメント  ·  ソース: cucumber/cucumber-js

やあ、

私の関数を呼び出すシナリオを知る方法は? 関数シナリオでタグを使用するにはどうすればよいですか?

実際、私には1つのシナリオがあります。

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

関数でタグ@createModuleを使用したいThen:

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

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

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

タグ@createModuleを取得して、呼び出されるシナリオを指定するか、または他の代替手段として、どのシナリオが関数を呼び出すかを知りたいです。

最も参考になるコメント

解決済み:

追加した :

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

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

    callback();
});

と私の機能:

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

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

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

全てのコメント5件

タグは、cucumber-jsを実行するときに実行するシナリオを選択するために使用されます(READMEを参照)。 現在、ステップには、現在実行されているシナリオを伝える方法がありません。 シナリオの下のすべてのステップは、ワールドインスタンスを共有します(ステップ定義のthisを介してアクセスされます)。

解決済み:

追加した :

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

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

    callback();
});

と私の機能:

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

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

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

@jechazelleソリューションを投稿していただきありがとうございます別のユースケースでも同じ機能が必要です:)

cucumber-js3.2.1で使用する

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

私がそれを使用している理由は、特定のステップの実装がシナリオの既知のサブセットで失敗しているためです。そのため、追跡システムで重大ではない欠陥チケットを作成し、失敗したシナリオにticket#でタグを付けてから、ロジックを追加しました。ステップの実装で、this.tagsにチケット番号が含まれている場合に「pending」を返します。

これにより、アウトビルドをグリーンに戻すことができますが、欠陥を修正するかどうかを決定する権限があります。

このスレッドは、閉じられた後、最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、新しい問題を開いてください。

このページは役に立ちましたか?
0 / 5 - 0 評価