結局、JonMに似たソリューションを使用することになりました。
同時実行のステップとして、正しいコンテキストに渡される「メタ」ステップを作成しました。次に例を示します。
When /^I log in$/ do
step %Q{I log in on #{@context}}
end
次に、別のファイル(コンテキストで区切られている)に次のようになります。
When /^I log in on mobile$/ do
# do stuff
end
コンテキストを設定するために、サポートモジュールを作成しました。基本的に、現在のコンテキストを保持し、デフォルトのコンテキストもあります。これは、次の手順で変更できます。
Given /^I am on the "(.*?)" version$/ do |version|
@context = version
end
コンテキスト部分の設定方法とは異なりますが、全体像はわかります。
これの利点は、無限のコンテキストを持つことができ、この「メタ」ステップがそれらを取得することです。私も肥大化したステップを持っていません。各ステップはシンプルなままで、独自のコンテキストロジックのみを扱います。
欠点は、デフォルト以外のコンテキストごとに、異なるコンテキストにいることを示す背景が必要になることです。
そのようなことはないので、私はここで正しい答えを受け入れません。さまざまなアプローチで対処できますが、これまで、これに関するベストプラクティスすらありません:)