rails チュートリアルの11章の11.30のテストがGreenになりません。
チュートリアル
以下のページを参考にしても解決できませんでした。
https://teratail.com/questions/35527
https://stackoverflow.com/questions/27671085/how-do-i-troubleshoot-this-error
sessions_helper_test.rb
ruby
1require 'test_helper' 2 3class SessionsHelperTest < ActionView::TestCase 4 5 def setup 6 @user = users(:michael) 7 remember(@user) 8 end 9 10 test "current_user returns right user when session is nil" do 11 assert_equal @user, current_user 12 assert is_logged_in? 13 end 14 15 test "current_user returns nil when remember digest is wrong" do 16 @user.update_attribute(:remember_digest, User.digest(User.new_token)) 17 assert_nil current_user 18 end 19end 20 21
エラー
Failure: SessionsHelperTest#test_current_user_returns_right_user_when_session_is_nil [/Users/masashihiraishi/ruby_study/workspace/sample_app2/test/helpers/sessions_helper_test.rb:11]: --- expected +++ actual @@ -1 +1 @@ -#<User id: 762146111, name: "Michael Example", email: "michael@example.com", created_at: "2017-05-27 06:55:31", updated_at: "2017-05-27 06:55:32", password_digest: "$2a$04$OWpd.GZ46aC24J3O3c3RV.bAsWSK1N2..EB7bDirAXh...", remember_digest: "$2a$04$Hx/bpqOtDHencDSimJONSuiDem7gunIjsvoCIX65JdL...", admin: true, activation_digest: nil, activated: true, activated_at: "2017-05-27 06:55:31"> +nil
sessins_helper.rb
ruby
1module SessionsHelper 2 # 渡されたユーザーでログインする 3 def log_in(user) 4 session[:user_id] = user.id 5 end 6 # ユーザーを永続的セッションに記憶する 7 def remember(user) 8 user.remember 9 cookies.permanent.signed[:user_id] = user.id 10 cookies.permanent[:remember_token] = user.remember_token 11 end 12 # 渡されたユーザーがログイン済みユーザーであればtrueを返す 13 def current_user?(user) 14 user == current_user 15 end 16 # 記憶トークンcookieに対応するユーザーを返す 17 def current_user 18 if (user_id = session[:user_id]) 19 @current_user ||= User.find_by(id: user_id) 20 elsif (user_id = cookies.signed[:user_id]) 21 user = User.find_by(id: user_id) 22 if user && user.authenticated?(:remember,cookies[:remember_token]) 23 log_in user 24 @current_user = user 25 end 26 end 27 end 28 # ユーザーがログインしていればtrue、その他ならfalseを返す 29 def logged_in? 30 !current_user.nil? 31 end 32 # 永続的セッションを破棄する 33 def forget(user) 34 user.forget 35 cookies.delete(:user_id) 36 cookies.delete(:remember_token) 37 end 38 # 現在のユーザーをログアウトする 39 def log_out 40 forget(current_user) 41 session.delete(:user_id) 42 @current_user = nil 43 end 44 # 記憶したURL (もしくはデフォルト値) にリダイレクト 45 def redirect_back_or(default) 46 redirect_to(session[:forwarding_url] || default) 47 session.delete(:forwarding_url) 48 end 49 # アクセスしようとしたURLを覚えておく 50 def store_location 51 session[:forwarding_url] = request.original_url if request.get? 52 end 53 54end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。