我有一个非常简单的密码重置表单,它只是一个输入电子邮件和提交按钮的文本字段。如何访问Capybara使用的相同DB数据
有一些使用JS的客户端验证,所以我在为它写规格测试时使用Capyabara JS驱动程序。
这个测试只是测试,一个密码重置令牌被添加到用户的auth_info
表。
describe "password reset form", js: true do
let(:email) { "[email protected]" }
# Create existing user with an email so we can reset it's password
let!(:user) { create(:user, email: email) }
before(:each) do
fill_in email_field, with: email
click_button reset_button
end
it "generates a new token" do
# `token` is definitely getting set properly when I pause it here
# with binding.pry and inspect the object using `user.reload`
# But when running the test it always shows up as `nil`
expect(user.reload.auth_info.token).to match(/[A-Fa-f0-9]{32}/)
end
end
正如评论指出,我知道一个事实,该令牌获取正确的,当我检查它直接使用binding.pry
设置。但RSpec和Capybara将其视为nil
,即使在使用reload
刷新模型之后。
是水豚维持不同的缓存还是什么?
谢谢!
编辑:还试图施加reload
到User
模型的不同组合以及在AuthInfo
模型,万一我需要刷新后者太
取决于你在哪里窥探到你的代码,有同样的问题,因为我该在这一点上并没有现在 – jethroo