読者です 読者をやめる 読者になる 読者になる

RSpecでのrequire specについてのエントリーリンク

最近のRails開発ではコントローラーのテストをあまりやらないとのこと。

Rails 5 では、 assigns と assert_template が soft deprecated になりました。 コントローラーテスト自身は deprecated にはなっておらず、 :type => controller メタデータを spec に指定するのは未だ完全にサポートされています。 Rails 3 と 4 において、controller spec の assigns は慣用されてきました。 今回の RSpec 3.5 はマイナーリリースであり、私たちは SemVer に準拠する以上、 既存の controller spec を壊さないようにしています。 既存の Rails アプリケーションで assigns を多用しているものについては、 rails-controller-testing gem を Gemfile に追加することで assigns と assert_template を復活させることができます。 RSpec はこの gem とシームレスに連携するため、controller spec は問題なく動作し続けるはずです。


これから新しく作成する Rails アプリケーションについては、 rails-controller-testing gem を追加するのはおすすめしません。 Rails チームや RSpec コアチームとしては、代わりに request spec を書くことを推奨します。 Request spec は一つのコントローラーアクションにフォーカスしますが、 controller spec とは違い、ルーターやミドルウェアスタック、Rack リクエストやレスポンスも関与します。 これによって、より現実に近い環境でテストを実行し、controller spec で発生しがちな多くの問題を避けることができます。 Rails 5 では、request spec が Rails 4までの request spec や controller spec よりもかなり高速になっています。 これは Rails チームの Eileen Uchitelle1 のおかげです。

RSpec 3.5 がリリースされました!より)

リクエストスペックはAPIを作成する場合のテストとして使われていた様子。

コントローラーテスト