我正在关注 railstutorial.org第3版,目前正在开展第8章:登录,注销。
我在代码清单8.51中找到了一个问题(登录时没有记住测试):
assert_nil cookies['remember_token']
当我执行:rake test
时,它返回RED并出现以下错误:
FAIL["test_login_without_remembering", UsersLoginTest, 1.268578948]
test_login_without_remembering#UsersLoginTest (1.27s)
Expected "" to be nil.
test/integration/users_login_test.rb:46:in `block in <class:UsersLoginTest>'
否则,当我更改为以下代码时,它将返回GREEN并且登录 - 注销过程正常工作。
assert_not_nil cookies['remember_token']
任何面临同样问题的人都能解释这个案子吗?
谢谢。
答案 0 :(得分:22)
我犯了这个错误......
TL; DR;从remember user
sessions_controller.rb
看看Listing 8.34。
你应该找到
remember user
在session_controller.rb
。
现在参考同一个文件,看看Listing 8.49。
作者对此行做了大量的介绍,但是如果你只是粘贴它而不删除对remember user
的调用,那么令牌仍会生成。
所以,当粘贴在这一行时:
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
确保将呼叫替换为remember user
。