什么'在RubyonRails教程中,我们继续进行这个失败的测试



我正在做Michael Hartl的Ruby on Rails教程,当我运行rails test时,我一直得到这个失败的测试

Running via Spring preloader in process 68226
Started with run options --seed 29383
FAIL["test_login_with_remembering", UsersLoginTest, 1.3566609998233616]
test_login_with_remembering#UsersLoginTest (1.36s)
Expected: "s0MI7G1uhFcqNFBgQaH9tg"
Actual: nil
test/integration/users_login_test.rb:45:in `block in <class:UsersLoginTest>'
44/44: [===============================================================================] 100% Time: 00:00:01, Time: 00:00:01
Finished in 1.36854s
44 tests, 206 assertions, 1 failures, 0 errors, 0 skips

这是我的代码:

def setup
@user = users(:michael)
end
test "login with remembering" do
log_in_as(@user, remember_me: '1')
@user.reload
assert_not_nil cookies['remember_token']
assert_equal cookies['remember_token'], @user.remember_token
end

这在我的users.yml文件中:

michael:
name: Michael Example
email: michael@example.com
password_digest: <%= User.digest('password') %>
admin: true
activated: true
activated_at: <%= Time.zone.now %>

在测试时,@user.remember_token似乎没有值。

从持久化重新加载对象的那一刻,除非持久化,否则应用到它的每一个更改都会丢失。

因此,在您的情况下,在测试预期值之前,您必须保持或不重新加载。

test "login with remembering" do
log_in_as(@user, remember_me: '1')
# @user.reload # skip this
assert_not_nil cookies['remember_token']
assert_equal cookies['remember_token'], @user.remember_token
end

最新更新