- 更新日: 2014年4月23日
- RSpec
ActionController::RedirectBackError エラー
スポンサーリンク
RSpec のテストで遭遇したエラー。実装に redirect_to :back を使っている場合に、テストで発生するエラーです。以下のエラーメッセージが表示されました。
1 2 3 4 |
ActionController::RedirectBackError: No HTTP_REFERER was set in the request to this action, so redirect_to :back could not be called successfully. If this is a test, make sure to specify request.env["HTTP_REFERER"]. |
【お知らせ】 英単語を画像イメージで楽に暗記できる辞書サイトを作りました。英語学習中の方は、ぜひご利用ください!
スポンサーリンク
— 環境 —
rails-4.0.1
rspec-rails-2.14.0
capybara-2.2.0
ActionController::RedirectBackError の例外を rescue
1 2 3 4 5 6 |
def some_method ... redirect_to :back rescue ActionController::RedirectBackError redirect_to root_path end |
redirect_to :back を使用しているメソッドで、上記のように、ActionController::RedirectBackError の例外を rescue して root_path へとリダイレクトさせました。
root_path へとリダイレクトさせるようにしたので、RSpec のテストコードではリダイレクト先の確認を以下のように root_path に設定する。
1 |
expect(response).to redirect_to(root_path) |
あるいは、エラーメッセージにあるように、request.env[“HTTP_REFERER”] に適当なリファラーを設定する。私は、実装側で例外を rescue して root_path にリダイレクトさせました。
- – 参考リンク –
- Correctly doing redirect_to :back in Ruby on Rails when referrer is not available – Stack Overflow
スポンサーリンク
私は Rails のテストフレームワークには RSpec を使っています。サーバーのテスト用に Serverspec もおすすめです。
>> 次の記事 : ActionMailer のメール送信テストを RSpec で行う
- RSpec の関連記事
- FactoryGirlをSpringと共に使う時の注意
- 複数モデルのpost :createをテストするRSpecコード(Controller Spec)
- RSpec3でTime.nowをスタブ化(stub)
- RSpecでJSONによるPOSTリクエストをテスト
- RSpec & Capybara の雑感
- RSpec+Capybaraで同名の複数要素の並び順をテストする
- RSpec3ではrails_helper.rbがrequireされる
- Capybara + Launchy で RSpec テストをブラウザで確認
- CapybaraのwithinをRSpecで使う
- Serverspec(RSpec)のテスト出力に色を付けて見やすくフォーマット
Leave Your Message!