最近の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 のおかげです。
リクエストスペックはAPIを作成する場合のテストとして使われていた様子。
- Rails でつくる API のテストの書き方(RSpec + FactoryGirl) - 彼女からは、おいちゃんと呼ばれています
- RailsでつくるRESTful APIのrequest specを書く - それはBooks
- 体育の日って高速に唱えるとテストの日に聴こえる - ✘╹◡╹✘
- 【Rails】RSpecと三種の神器でらくちんWeb APIテスト - Qiita
コントローラーテスト