0

サブディレクトリで単一のキュウリ機能を実行するための Guardfileのトピックを読みましたか? 、これはうまく機能します。機能を変更すると、これだけがガードによって実行されます。

しかし、他の方向では機能しません。ステップ定義ファイルを編集する、ステップ定義ファイル内のステップを使用しているかどうかに関係なく、常にすべての機能が実行されます。

これは良くありません。少なくとも、編集したファイルのいずれかのステップを使用する機能のみを実行したいと考えています。しかし、ガードが現在編集されているステップを確認でき、この特定のステップを使用する機能のみを実行できるとさらに良いでしょう。

1 つ目は、それほど難しいことではないと思います。2番目はむしろ希望的観測のようです...

4

1 に答える 1

1

Guard を使いこなし、プロジェクトと独自のニーズに合わせて完璧にセットアップするには、ウォッチャーGuardfileを適宜変更して構成する必要があります。各 Guard プラグインに付属するテンプレートは、ほとんどのユーザーにとって最も便利な動作に合わせようとしますが、これは個人の好みとは異なる場合があります。

各 Guard プラグインは DSL メソッドで始まりguard、その後にオプション ハッシュが続き、Guard プラグインを構成します。多くの場合、オプションは Guard プラグインによって異なります。詳細については、プラグインのREADMEを参照する必要があります。

guardブロックの間に、do ... end通常はウォッチャーを構成します。ウォッチャーは、監視対象のファイルを記述するRegExpで定義する必要があります。Rubularを使用してウォッチャーをテストします。出力からコピーした現在の機能を貼り付けて、正規表現をテストfind featuresするための実際のファイルを作成できます。

この線

watch(%r{features/.+\.feature})

たとえば、featuresで終わるフォルダー内のすべてのファイルを監視します.feature。ウォッチャーにブロックが提供されないため、一致したファイルは変更されずに Guard::Cucumber に渡されて実行されます。

ウォッチャー

watch(%r{features/support/.+})          { 'features' }

はディレクトリ内のすべてのファイルに一致し、サポート ディレクトリ内のファイルが変更されるたびfeatures/supportにブロックが常に を返すため、Guard::Cucumber に渡され、すべての機能が実行されます。featuresfeatures

最後の行

watch(%r{features/step_definitions/(.+)_steps\.rb}) do |m| 
  Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
end

ディレクトリ内で で終わるすべてのファイルを監視し、ステップ定義の機能と一致_steps.rbfeatures/step_definitionsせようとします。RegExp の括弧に注意してくださいfeatures/step_definitions/(.+)_steps\.rb。これにより、後でウォッチャー ブロックで使用できる一致グループが定義されます。たとえば、ステップ定義features/step_definitions/user_steps.rbが一致し、最初の一致グループ ( m[1]) には値が含まれますuser

ここで、という名前のすべてのサブディレクトリ ( ) で一致するファイルを見つけようとします。この場合は、最初に一致したファイル ( ) を実行するか、何も見つからない場合はすべてを実行します。**user.feature[0]features

したがって、デフォルトの Guard::Cucucmber Guardfile が期待するものとは異なる名前をステップに付けたように見えますが、これはまったく問題ありません。命名規則に合わせてウォッチャーを変更するだけです。

于 2012-06-28T22:48:22.617 に答える