【发布时间】:2020-02-06 01:06:21
【问题描述】:
我正在完成https://www.railstutorial.org/ 的第 9 章,但在进行集成测试时遇到了麻烦。
测试看起来像这样:
class UsersLoginTest < ActionDispatch::IntegrationTest
...
test "login with remembering" do
log_in_as(@user, remember_me: '1')
assert_not_empty cookies['remember_token']
end
...
end
对 log_in_as 的调用是添加到我的 test_helper 中的 ActionDispatch::IntegrationTest 的函数,并且似乎按预期工作。此函数的副作用之一是设置了名为“remember_token”的 cookie。但是,断言失败并显示以下消息:
FAIL["test_login_with_remembering", UsersLoginTest, 14.115229932998773]
test_login_with_remembering#UsersLoginTest (14.12s)
Expected nil (NilClass) to respond to #empty?.
test/integration/users_login_test.rb:48:in `block in <class:UsersLoginTest>'
知道这里发生了什么吗?在调试器中运行测试似乎表明 cookie 对象不包含我所期望的任何内容(我在应用程序中设置了几个 cookie,但它们都没有出现)。所有谷歌出现的都是一堆人建议在集成测试中访问 cookie 是个坏主意。如果有帮助,我正在运行 Rails 5.1.2。
【问题讨论】:
标签: ruby-on-rails cookies