4

カスタムひょうたんステップ (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
  • 一般的に、シナリオ作成者 (多くの場合 QA) に特定の言い回しを使用しないように言うのは好きではありません。オプションを削除するよりも、代わりの言い回しを追加したいと思います。

組み込みステップの定義を解除する方法はありますか? Android canned_stepのドキュメントでは、次のものが必要であることが示唆されています。You can add your own steps or change the ones you see here

定義済みのすべてのステップをすぐに失いたくありません (例: calabash_steps.rb は必要ありません)。問題が発生した場合にのみ、それらを段階的に廃止したいと思います。また、できればひょうたんコードを直接編集したくありません。それには、gem を使用してインストールする代わりに、自分のひょうたんディストリビューションを展開する必要があるからです。

4

1 に答える 1

4

問題が発生した場合にのみ、それらを段階的に廃止したいと思います。また、できればひょうたんコードを直接編集したくありません。それには、gem を使用してインストールする代わりに、自分のひょうたんディストリビューションを展開する必要があるからです。

features/support/env.rb、に置き換えますrequire calabash-android/cucumber

require 'calabash-android/color_helper'
require 'calabash-android/operations'

World(Calabash::Android::ColorHelper)
World(Calabash::Android::Operations)

次に、calabash-android の既定の手順をプロジェクト内のファイルにコピーしますfeatures/step_definitions/canned_steps.rb

必要に応じて、定義済みの手順を削除または置き換えます。

そして注意してください - 私たちは iOS と Android API のマージである Calabash 2.0 に取り組んでいます。calabash新しいgem から事前定義されたステップを削除し、それらを別の gem として配布することについて話し合っています。例として、 rspecが動作を個別の gem として配布する方法を見てください。これについてはまだ決定が下されていません。

于 2015-04-07T09:04:52.483 に答える