我正在关注 railstutorial.org第三版,目前正在研究第8章:登录,注销

我在代码 list 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']

遇到相同问题的任何人都可以解释这种情况吗?

谢谢你。

最佳答案

我只是犯了这个错误...

TL; DR;从remember user中删除sessions_controller.rb
看一看Listing 8.34
你应该找到remember usersession_controller.rb中。

现在引用同一文件,看看Listing 8.49
作者对这一行进行了很多处理,但是如果您仅粘贴它而不删除对remember user的调用,那么仍然会生成 token 。

因此,在粘贴此行时:
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
确保它替代了对remember user的调用。

10-08 04:38