- 更新日: 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)のテスト出力に色を付けて見やすくフォーマット
 

画像付き英語辞書 Imagict | 英単語をイメージで暗記





Leave Your Message!