kenjuの日記

About Programming, Mathematics and Security

Request specの導入の際にまとめた調査メモ

Request Specを導入した際に、調査しまとめた社内記事が元です。

Request specとは

  • RSpec 3.5 の提供しているテスト手法
    • 内部実装的には、Rails5 の ActionDispatch::IntegrationTest のwrapper
  • Controller spec とは違い、ルーターやミドルウェアスタック、Rack リクエストやレスポンスも関与している
  • 「コントローラーの実装の詳細」から「一つ一つのリクエスト」をテスト対象とした、より現実のユースケースの振る舞いに着目したテスト

テストすべき内容

  • 実際に呼び出すURL(url helper or 文字列でパス)をテストする
    • action_name ではなく
  • 実際に送信するparamsやheadersを元にテストする
    • params, headers, env, xhr 以外のキーワード引数を任意に渡すのではなく
  • 実際に返却された json responseをテストする
    • インスタンス変数やテンプレート、Viewの中身ではなく

ログイン周り

参考になる実装例の乗った記事

技術的メモ

ActionDispatch::Integration::Session#processが実際に使われるメソッド

ActionDispatch::Integration::Session

実際のspecには、ActionDispatch::Integration::RequestHelpers の提供する #get, #post, #deleteなどを呼び出す想定

関連ドキュメント

メイン資料

補助的資料