やあ、
私の関数を呼び出すシナリオを知る方法は? 関数シナリオでタグを使用するにはどうすればよいですか?
実際、私には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を取得して、呼び出されるシナリオを指定するか、または他の代替手段として、どのシナリオが関数を呼び出すかを知りたいです。
タグは、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」を返します。
これにより、アウトビルドをグリーンに戻すことができますが、欠陥を修正するかどうかを決定する権限があります。
このスレッドは、閉じられた後、最近のアクティビティがないため、自動的にロックされています。 関連するバグについては、新しい問題を開いてください。
最も参考になるコメント
解決済み:
追加した :
と私の機能: