RSpec Request Specメモ
RSpecはRailsのテストヘルパーも利用できる。Rails Guide Rails テスティングガイド 8 コントローラの機能テストも参照。
assigns、render_template
公式ドキュメントを見ると未だにassignsとrender_templateの例が載っているが、現在はデフォルトでは利用できないしrails-controller-testinggemを追加すれば利用できるとはいえ利用するのは非推奨である。
リクエスト
get root_url、post users_url, params: { user: { name: '鈴木' } }のようにリクエストができる。
レスポンス
リクエストを送った後にresponseで参照することができる。
expect(response).to redirect_to(...)
レスポンスが指定先のリダイレクトであることを確認する。
expect(response).to have_http_status(...)
レスポンスが指定のHTTPステータスコードか確認する。
expect(response.body).to include('...')
レスポンスの内容に指定の文字列が含まれていることを確認する。
css_select
CSSセレクタを指定してresponse.bodyからマッチする部分を切り抜く。RSpecではなくRailsに組み込まれているテストヘルパー。Nokogiriを利用しているので多用するとテストが遅くなるんじゃないかと思う。戻り値はNokogiriのインスタンスなので、textなどを呼び出す必要がある。
get root_url
expect(css_select('#link').text).to include('...')
session、flash、cookies
各々のメソッドでセッションなどにアクセスができる。