RSpec Request Specメモ
RSpecはRailsのテストヘルパーも利用できる。Rails Guide Rails テスティングガイド 8 コントローラの機能テストも参照。
assigns
、render_template
公式ドキュメントを見ると未だにassigns
とrender_template
の例が載っているが、現在はデフォルトでは利用できないしrails-controller-testing
gemを追加すれば利用できるとはいえ利用するのは非推奨である。
リクエスト
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
各々のメソッドでセッションなどにアクセスができる。