2017-04-20 1 views
0

ガーキンについてのドキュメントを調べるのは非常に難しいと思われるので、テスターが適切な文法を使用できるようにステップ定義を増やす方法があるのだろうかと思っていました。私が意味することを示す1つの例は:ガーキンの適切な文法の使用

...Testing... 
Then I see there is 1 item 
...More testing... 
Then I see there are 2 items 

明らかに、これらの2つのステップは同じコードを使用します。私はほとんど機能し、このようなステップ定義を定義した:問題を除き

Then(/^I see there (is|are) (\d+) item(s)?$/) do |item_count| 
    ...code... 
end 

は、引数としてis/areとオプションの複数sを解釈するということです。 Gherkinに伝える方法はありますか?これは正しい文法を許可するためのものですか?

答えて

2

グループの先頭に「?:」を使用すると、キャプチャされていないとマークされます。キュウはそれを引数として渡しません。

/^I see there (?:is|are) (\d+) item(?:s)?$/ 
1

これらの手順で同じコードを使用する必要はありません。代わりに、同じコードを呼び出すことができます。このパターンを適用すると、コードを実行するためによく表現された自然言語を使用しているはずの1つのことだけを実行するステップに集中できます。だから... ...

module ItemStepHelper 
    def see_items(count:) 
    ... 
end 
World ItemStepHelper 

Then 'I see there is one item' do 
    see_items(count: 1) 
end 

Then 'I see there are \d+ items' do |count| 
    see_items(count: count) 
end 

今、明らかにこの例ではほとんど利益のためにかなり多くの定型のthatsが、あなたはより現実的な例にパターンを適用するとメリットが本当にでキックを開始します。具体的には、あなたは決して(実際には私のステップデフの90%以上は正規表現を使用していなくても)ステップ定義のための本当に複雑な正規表現を書く必要があります。