###前提・実現したいこと
rails初心者です。
rails4.2.2でrailsアプリを作っています。
こちらのサイトを参考にしていますがログイン周りは独自の修正を入れています。
http://railstutorial.jp/chapters/sign_up?version=4.2#cha-sign_up
ログインのintegration testを実行した時に、Failするのですが、表示されるエラーメッセージだけだと、何が起こっているのか分かりません。
テストコードに何らかのデバッグログ出力を埋め込んで、原因を調べたいのですが、
どのように記述していけば良いのか、分かりません。
モデルのテストであれば、
assertの2番目の引数に、モデルの変数.errors.full_messagesを表示することで原因を特定できたのですが、
@user,@sessionどちらもnilのようでした。
メッセージ内容を見ると、例外が発生しているように見えます。
ブラウザでログイン操作をしている際はログイン成功時、失敗時ともに画面上は問題なく動作しているように見えます。
どのように原因を調べていくのが良いのでしょうか?
###発生している問題・エラーメッセージ
/develop/hoge/test/integration (master *%>)$ rake test (in /develop/hoge) Run options: --seed 22374 # Running: .........F................ Finished in 3.334764s, 8.3964 runs/s, 14.0940 assertions/s. 1) Failure: UsersSigninTest#test_signin_with_invalid_information [/develop/hoge/test/integration/users_signin_test.rb:8]: expecting <"sessions/new"> but rendering with <["rescues/_trace", "routes/_route", "routes/_table", "rescues/_request_and_response", "rescues/routing_error", "rescues/layout"]>
###該当のソースコード
sessions_controller.rb
ruby
1class SessionsController < ApplicationController 2 def new 3 redirect_to root_url if signed_in? 4 end 5 6 def create 7 user = User.find_by(email: params[:session][:email]) 8 if !user then 9 user = User.find_by(name: params[:session][:email]) 10 end 11 if user && user.authenticate(params[:session][:password]) 12 sign_in user 13 redirect_back_or shops_path 14 else 15 flash.now[:danger] = 'Invalid email or name / password combination' 16 render 'new' 17 end 18 end 19end
users_signin_test.rb
ruby
1require 'test_helper' 2 3class UsersSigninTest < ActionDispatch::IntegrationTest 4 test "signin with invalid information" do 5 get signin_path 6 assert_template 'sessions/new' 7 post_via_redirect signin_path, session: { email: "", password: "" } 8 assert_template 'sessions/new' # <- Line8 fail... 9 assert_not flash.empty? 10 get root_path 11 assert flash.empty? 12 end 13end
###補足情報(言語/FW/ツール等のバージョンなど)
rails4.2.2
ruby 2.1.2p95
rubymineなどのIDEは使っていません。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。