私の目標
私は大規模なアプリケーションのための機能やステップの定義のスケーラブルな構造を作成しようとしていますし、私の最初のショットは、私は別のステップの定義については、同一のステップパターンを使用することができるような機能にstep_definitionファイルをリンクしようとしていました。cucumber-jsの各機能ファイルのステップ定義ファイルはどのように指定できますか?
マイコード
私は私の現在の例を示しています。私は私のsample.feature
で
/features/sample.feature
/features/example.feature
/features/step_definitions/sample_steps.js
/features/step_definitions/example_steps.js
/features/step_definitions/common/common_steps.js
::私は私のexample.feature
で
Scenario: Launching Cucumber
Given I have some step definitions
When I check some step definition with parameter "any"
Then I should see all green "sample"
を:
マイフォルダ構造を
Scenario: Launching Cucumber
Given I have some step definitions
When I check some step definition with parameter "any"
Then I should see all green "example"
Given
とWhen
の手順は、/common/common_steps.js
ファイルで定義されており、正常に動作します。
Then
のステップは、sample_steps.js
とexample_steps.js
の両方に定義されていますが、異なっています。私が持っている私のsample_steps.jsで
:
Then('I should see all green {stringInDoubleQuotes}', (arg) => {
if (arg !== 'sample') {
throw 'I should see all green when the argument is "sample"';
}
return;
});
そして、最後に、私が持っている私のexample_steps.js中:
Then('I should see all green {stringInDoubleQuotes}', (arg) => {
if (arg !== 'example') {
throw 'I should see all green when the argument is "example"';
}
return;
});
エラー
私の主な目標は持っていることですすべてここで緑色ですが、もちろん動作しません。私はこのobvioulyエラーを受け取ります。
Multiple step definitions match:
I should see all green {stringInDoubleQuotes} - features\step_definitions\example_steps.js:6
I should see all green {stringInDoubleQuotes} - features\step_definitions\sample_steps.js:6
キュウリ、JVMは
私はキュウリ、JVMで、我々は機能とstep_definitionsをリンクglue
属性を指定することができ、それは私が探しているまさにだが、キュウリ-jsからであることを知っています。 Javaでの例:
@RunWith(Cucumber.class)
@Cucumber.Options(glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.sample" })
public class SampleFeature{
}
@RunWith(Cucumber.class)
@Cucumber.Options(glue = { "com.app.stepdefinitions.common", "com.app.stepdefinitions.example" })
public class ExampleFeature{
}
最後に
どのように私はキュウリ-JSを使用してcucumbr-JVMと同じように達成することができますか?
よく...私は、手順が複雑すぎるため引数を受け取るスーパー汎用メソッドを避けたいと思います。あなたの最初の選択肢は今でも私が今やっていることです。しかし、私は、フィーチャファイルにいくつかの技術的な単語を入れて、ステップを区別しています:( – robsonrosa
私の編集を参照してください、一般的かもしれませんが、Cucumberが実際のステップをシナリオに接着する方法を提供するまで、 –