RSpec Request Specメモ

RSpecはRailsのテストヘルパーも利用できる。Rails Guide Rails テスティングガイド 8 コントローラの機能テストも参照。

assignsrender_template

公式ドキュメントを見ると未だにassignsrender_templateの例が載っているが、現在はデフォルトでは利用できないしrails-controller-testinggemを追加すれば利用できるとはいえ利用するのは非推奨である。

リクエスト

get root_urlpost 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('...')

sessionflashcookies

各々のメソッドでセッションなどにアクセスができる。