“记住我”复选框的集成测试失败

时间:2014-11-28 08:55:35

标签: ruby-on-rails ruby cookies session-cookies railstutorial.org

我正在关注 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']

任何面临同样问题的人都能解释这个案子吗?

谢谢。

1 个答案:

答案 0 :(得分:22)

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

TL; DR;从remember user

中删除sessions_controller.rb

看看Listing 8.34。 你应该找到 remember usersession_controller.rb

现在参考同一个文件,看看Listing 8.49。 作者对此行做了大量的介绍,但是如果你只是粘贴它而不删除对remember user的调用,那么令牌仍会生成。

所以,当粘贴在这一行时:

params[:session][:remember_me] == '1' ? remember(user) : forget(user)

确保将呼叫替换为remember user