我正在学习Michael Hartl Ruby on Rails 5教程,我在测试中遇到了一个我似乎找不到的错误。包含的屏幕截图显示了测试的调试输出。特别是,它表明应该删除的“remember_token”的行为很奇怪。如果我将调试代码放到forget()函数中,它看起来是删除的,并且是空的,但在集成测试中,它似乎并没有完全删除。取而代之的是从nil返回"“?测试而不是true/false。user_id cookie也有同样的问题,但是测试中从未正确创建的诸如'blah‘之类的cookie响应为nil?是真的。有什么想法吗?
实际删除:remember_token的forget方法
def forget(user)
user.forget
cookies.delete(:user_id)
cookies.delete(:remember_token)
end
如果屏幕截图不清楚,这里是失败的测试:
test "login without remembering" do
# Log in to set the cookie.
log_in_as(@user, remember_me: '1')
delete logout_path
# Log in again and verify that the cookie is deleted.
log_in_as(@user, remember_me: '0')
Rails::logger.debug "**************************************************"
Rails::logger.debug cookies['blah'].nil?
Rails::logger.debug cookies['remember_token'].nil?
Rails::logger.debug "**************************************************"
assert_nil cookies['remember_token']
end
以下是日志文件中的输出:
Completed 302 Found in 2ms (ActiveRecord: 0.1ms)
**************************************************
true
**************************************************
下面是测试结果中的错误消息:
FAIL["test_login_without_remembering", UsersLoginTest, 0.24238487900584005]
test_login_without_remembering#UsersLoginTest (0.24s)
Expected "" to be nil.
test/integration/users_login_test.rb:57:in `block in <class:UsersLoginTest>'
发布于 2019-06-05 09:06:20
sessions_controller.rb的教程建议可能需要更改回原始建议:
params[:session][:remember_me] == '1' ? remember(user) : forget(user)
发布于 2021-04-03 07:52:09
我自己也是新手,但我不会...
断言cookies“‘remember_token”。空白吗?
工作时仍然显示remember_token已不存在,问题似乎是记住令牌现在为空,而不是
https://stackoverflow.com/questions/41077991
复制相似问题