12

私は RSpec テストを書いていますが、異なる Web サイトで同じ意見を読んでいないところまで来ました。RSpec のディレクトリ構造は、spec/controllers および spec/models ディレクトリを扱っている場合は明確ですが、ビューのテストに関する矛盾した情報が得られます。

これらのテストを spec/integration/ ディレクトリに配置したいのですが、spec/integration の下にあるはずだと読みましたが、別の本には spec/requests と書かれています。これは問題ですか?

状況をさらに複雑にするために、テストの実際のファイル名の命名に関する矛盾した情報を読みました! たとえば、「people」という名前のコントローラー/モデル/ビュー ディレクトリがある場合 (私は haml を使用します)、次のようにファイルに名前を付ける必要があります。

仕様/統合/人々.html.haml_spec.rb

しかし、別の本は次のように示唆しています。

スペック/リクエスト/people_spec.rb

RSpec 内の命名規則と、ビュー テストに特定の名前を付ける必要がある理由、およびそれらを spec/integration または spec/requests の下に配置することが重要かどうかについて少し説明したいと思います。ここは風に乗っていく感じです。

どんな助けでも大歓迎です。

4

2 に答える 2

12

書籍の日付と、それらが書かれた RSpec のバージョンを確認してください。命名構造は、時間の経過とともにわずかに変更されました。

rspec-railsのドキュメントによると、リクエスト スペックは spec/requests、spec/api、または spec/integration に入れることができます。リクエストの仕様を spec/requests に入れることを好みます。

さらに興味深いことに、 rspec-rails でカピバラを使用している場合、カピバラ 1.x の仕様/要求、およびカピバラ 2 の仕様/機能で動作します。

個々のスペック ファイル名に関しては、テスト対象の特定のクラス (Rails モデルなど) がある場合は、類似のスペック ファイル名を使用する必要があります。

app/models/user.rb->spec/models/user_spec.rb

ビュー スペックでは、テンプレート名を使用する必要があります。

app/views/users/index.html.erb->spec/views/users/index.html.erb_spec.rb

名前空間モデルには、スペック ファイル パスに名前空間を含める必要があります。

app/models/admin/user.rb->spec/models/admin/user_spec.rb

RSpec 足場ジェネレーターは、これらの仕様がどこに属しているかを示すための優れたガイドです。

要求仕様の場合のように、テスト対象の特定のクラスがない場合、私見では、テスト対象のものを説明する名前を自由に使用する必要があります。例spec/requests/place_an_order_spec.rb

于 2013-01-08T04:08:52.357 に答える