Ruby on Rails教程测试失败
问题描述:
我在Michael Hartl的ruby on rails教程一书的第8章中,而我被困在第8章的会话帮助程序测试中。我不确定为什么,但它一直失败,这里是输出:Ruby on Rails教程测试失败
1) Failure:
SessionsHelperTest#test_current_user_returns_right_user_when_session_is_nil[/home/robert/sample_app/test/helpers/sessions_helper_test.rb:11]:
--- expected
+++ actual
@@ -1 +1 @@
-#<User id: 762146111, name: "Michael Example", email: "[email protected]", created_at: "2015-10-16 20:15:11", updated_at: "2015-10-16 20:15:12", password_digest: "$2a$04$GeN8/eE5hXsYwZA9AMATQeOpe5MyN2rAglt8di5kTch...", remember_digest: "$2a$04$wsaTKG4lu5.vTc3Sb62tB.QCWtfpo6ifSvXcPW0FNVE...">
+nil
这里是一个链接到我的到位桶回购:https://bitbucket.org/colcrunch/sample-app/src/efcdda6964160121a707094b873954750f852bb2?at=log-in-log-out
任何帮助,将不胜感激!
答
使用教程为指导,在你的sessions_helper.rb文件更改行12:
cookies.permanent.signed[:remember_token] = user.remember_token
到
cookies.permanent[:remember_token] = user.remember_token
答
我有同样的问题,找到了修复。从第12行删除“已签名”的一些建议不正确。这在程序中造成安全缺陷。
这里是如何解决这个问题:
在你sessions_helper.rb文件更改行22:
if user && user.authenticated?(cookies[:remember_token])
到
if user && user.authenticated?(cookies.signed[:remember_token])
这将是更好的包括相关部分代码并指出其失败的地方,而不是链接整个项目。否则,我们不得不克隆和运行项目,挑选代码等。 –
我不知道实际上是什么导致它失败... sessions_helper_test.rb与示例中的完全相同,它说应该工作,我的猜测是,这是在这里的变化的某处:https://bitbucket.org/colcrunch/sample-app/commits/343630d42479149ac460c565d9139ac1d10a1503?at=master,但我不知道。 – TinaTinaShanoose
考虑到测试方法的名称,似乎'current_user'不是你期望的那样。所以这可能是你的'current_user'方法的一个问题,或者测试本身是不合适的。注意,从'current_user'方法快速浏览一下,如果没有会话或cookie,它似乎不会返回任何内容,但测试方法似乎意味着它应该;这是它应该如何? –