0

Cucumber は、受け入れテスト フレームワークの略です。そのため、キュウリの BDD はコントローラーとビューの操作を前提としています。

しかし驚くべきことに、コントローラーまたはビュー ファイル (この機能に関連する) が変更された場合、guard-cucumber は機能を実行するためのアプローチを提供しません。

機能とシナリオにタグを付けることができます。この場合、コントローラーによって名前が付けられたタグを使用するにはどうすればよいですか?

4

1 に答える 1

2

BDD の考え方は、開発を外部から内部に推進することです。つまり、Cucumber を使用して外部から機能を説明することから始めます。外部からは、ソフトウェアの内部の仕組みについて何も知らないため、Cucumber のコントローラーやビュー ファイルについては何も知りません。外部からアプリケーションと通信するには、CLI インターフェイスや Web インターフェイスなどの提供されたインターフェイスを使用します。Web インターフェイスが与えられた場合、Web を閲覧するという観点から外部を説明します。URL に移動し、リンクやボタンを押し、フォームに入力し、Web ページを見て結果を確認します。

BDD サイクルでは、外部から機能を記述しますが、それを実装するには、RSpec などの別のテスト フレームワークを使用して開発を進める内部に移動する必要があります。内側のループで作業するときは、モデル、コントローラー、およびビュー テストを記述して実装を駆動します。内側のテスト ループと外側のテスト ループの両方が緑色の場合は、機能の実装に成功しています。

Guard::RSpec と Guard::Cucumber は、outside-in 開発用のすぐに使用できる実装を提供しませんが、Guard API を使用してそれを実現できます。

guard :rspec do 
  # ... your normal rspec guard config goes here

  # run cucumber after rspec passes
  callback(:run_all_end) do
    unless Guard.guards(:rspec).last_failed
      Guard.run_all({ :guard => Guard.guards(:cucumber) })
    end
  end
end

このグルー コードは、すべての RSpec 仕様が緑色のときに Cucumber をトリガーし、フォーカスを外側のループに戻します。もちろん、これを拡張して、実行される機能をよりきめ細かく制御することもできますが、これは、機能/仕様ファイルとディレクトリの適切な命名スキーマに大きく依存します。

于 2013-03-14T12:40:59.847 に答える