9.3.2 [Remember me] をテストする
リスト 9.33: 例外発生部分を削除する green
リスト 9.34: green
$ rails test
app/helpers/sessions_helper.rbからraiseを削除してテストしたところ、以下のようなエラー(red)になった。
(ターミナル)
$ rails test test/helpers/sessions_helper_test.rb
Running via Spring preloader in process 11077
Started with run options --seed 26989
FAIL["test_current_user_returns_right_user_when_session_is_nil", SessionsHelperTest, 0.038832178001030115]
test_current_user_returns_right_user_when_session_is_nil#SessionsHelperTest (0.04s)
--- expected
+++ actual
@@ -1 +1 @@
-#
+nil
test/helpers/sessions_helper_test.rb:11:in `block in class:SessionsHelperTest'
2/2: [==========================] 100% Time: 00:00:00, Time: 00:00:00
Finished in 0.06042s
2 tests, 2 assertions, 1 failures, 0 errors, 0 skips
#原因
/sample_app/app/helpers/sessions_helper.rb
\# 記憶トークンcookieに対応するユーザーを返す
def current_user
if (user_id = session[:user_id])
@current_user ||= User.find_by(id: user_id)
elsif (user_id = cookies.signed[:user_id])
user = User.find_by(id: user_id)
if user && user.authenticated?(cookies[:remember_token])
log_in user
@current_user = user
end
end
end
\# 現在ログイン中のユーザーを返す (いる場合)
def current_user
if session[:user_id]
@current_user ||= User.find_by(id: session[:user_id])
end
end
となっており、def current_userメソッドが2つ定義されていたので、
\# 現在ログイン中のユーザーを返す (いる場合)
def current_user
if session[:user_id]
@current_user ||= User.find_by(id: session[:user_id])
end
end
を消去したところ、テストがgreenになった。
(参考にしたサイト)
https://stackoverflow.com/questions/27671085/how-do-i-troubleshoot-this-error