カスタムひょうたんステップ (iOS と Android の両方で使用) を定義しており、さまざまな事前定義されたステップを選択的にオーバーライドしたいと考えています。例は次のとおりです。
Given /^I press the "([^\"]*)" button$/ do |text|
tap_when_element_exists("android.widget.Button {text CONTAINS[c] '#{text}'}")
end
この実装を使用する代わりに、独自の実装を提供したいと思います。一致する正規表現でステップを定義して使用すると、エラーが発生します。
Ambiguous match of "I press the "big red" button"
「--guess」を使用することも提案されていますが、それは役に立たず、それでもCucumber::Ambiguous
エラーが発生します。ステップの正規表現に任意の変更を加えることができます。例:
I tap the "big red" button
しかし、それはいくつかの理由で不十分な解決策のように感じます
- 特に最も自然な言い回しである可能性があるため、組み込みステップの使用を防止する必要がある
- canned_steps が将来のリビジョンで競合するステップを追加した場合、言い回しとすべてのシナリオを変更せざるを得なくなります
- また、Android と iOS の事前定義された手順では、言い回しが少し異なるようです。オーバーライドできない場合は、Android ではエラーが発生しませんが、 Android で事前定義された iOS の手順を使用しないようにする必要があることを意味します。
Cucumber::Ambiguous
- また、Android と iOS の事前定義された手順では、言い回しが少し異なるようです。オーバーライドできない場合は、Android ではエラーが発生しませんが、 Android で事前定義された iOS の手順を使用しないようにする必要があることを意味します。
- 一般的に、シナリオ作成者 (多くの場合 QA) に特定の言い回しを使用しないように言うのは好きではありません。オプションを削除するよりも、代わりの言い回しを追加したいと思います。
組み込みステップの定義を解除する方法はありますか? Android canned_stepのドキュメントでは、次のものが必要であることが示唆されています。You can add your own steps or change the ones you see here
定義済みのすべてのステップをすぐに失いたくありません (例: calabash_steps.rb は必要ありません)。問題が発生した場合にのみ、それらを段階的に廃止したいと思います。また、できればひょうたんコードを直接編集したくありません。それには、gem を使用してインストールする代わりに、自分のひょうたんディストリビューションを展開する必要があるからです。