2012-12-04 12 views
6

は私が持っていると言う:JBehaveあいまいなステップ

@Given("first name is $firstName") 
@Given("first name is $firstName and last name is $lastName") 

次のステップがあいまいとしてマークされます:

Given first name is John and last name is Smith 

最初のパラメータを囲む引用符を使用せずに、どのように私はそれように、この手順を修正することができます2番目のものと一致するだけですか?引用符を使用して両方のパラメータを別々に囲む場合も、同じあいまいさの問題があります。

各パラメータの長さには制限がありますか?渡すことができない特定の文字がありますか? 「

@Given("first name is $firstName") 
@And("last name is $lastName") 

は、あなたが最初にセットの名前と姓をpersonオブジェクトを作成することができます。

Given first name is John 
And last name is Smith 

そして、ステップ:

答えて

8

あなたは、ステップの優先順位を使用することによってこの問題を解決することができますhttp://jbehave.org/reference/stable/prioritising-steps.html

あなたの問題は、2つのパラメータをバリアントに高い優先度を設定することによって解決されるだろう:

@Given("first name is $firstName") 
@Given(value = "first name is $firstName and last name is $lastName", priority = 1) 

私はあなたの例を試してみましたこの組み合わせにより、2つのステップが分離された。

(編集:私の最初のソリューションは、パラメータのために引用符を持っていたが、それは同様にせずに動作します)私のために働いた何

+1

ありがとう!私はステップの優先順位については知らなかった。これは非常に便利です。 :) – user1877292

1

私はこのシナリオでは、このように書くことができると思います@Given "ステップ。
あなたが別のプロパティを追加する必要がある場合は、電子メールのように、あなただけの別のステップを作成必要がありますが起こると、あなたのコードはより再利用可能になります

@And("the email is $email") 
public addEmail(String email) { 
    person.setEmail(email); 
} 

だから、この問題つもりはないが。ここに記載されているよう

+0

申し訳ありませんが、私はそれは私が何を望むかの例の悪い簡素化だったと思います。 私はより良い、それを修正してくださいしてみましょう: @Given(「最初の名$ firstNameのある人」) @Given(「最初の名$ firstNameのと最後の名$ lastNameのある人」) これらの手順を呼び出します新しい人物オブジェクトを作成します。 名前がJohnと姓がSmith が の場合、名前が「Johnと姓Smith」または名前が「John」の人物を作成すると解析できます"と姓"スミス "。 – user1877292

+0

すべての「指定された」ステップでオブジェクトを作成する必要はなく、名前と姓を属性に格納し、「いつ」のステップでオブジェクトを作成することができます。私は[例](http:// github。この[シナリオ](https://)を使用して、/ com/piantino/automated-traceability-example/blob/master/scrumforge-acceptance-test-jbehave/src/test/java/org/scrumforge/acceptance/test/CreateUserStoryTest.java github.com/piantino/automated-traceability-example/blob/master/scrumforge-acceptance-test-jbehave/src/test/resources/stories/manage_resources/scrum_team/CreateUser.story)。私はこのアプローチがより再利用可能だと思います。 –

+0

ええ、私はそれを動作させるために別々のステップに分割する方法を理解していましたが、多くのオブジェクトを作成したいので、それを1ステップとして保つ方法があるかどうかを見たいと思っていました。必要です。 – user1877292

0

はすなわち、ドル記号($)のために足首のブラケット(<>)を代入

ました
@Given("a person with first name <firstName>") 

@Given("a person with first name <firstName> and last name <lastName>") 
関連する問題