为什么 FactoryBot 不在测试数据库中保存密码?

Why doesn't FactoryBot save passwords in the test database?

我刚刚 运行 遇到了一种情况,我不得不解决为什么我的测试用户无法登录系统测试。

原来用户的密码是nil。

我运行binding.pry创建用户后:

it 'some tests do
  user = create(:user)
  binding.pry
end

   user.password = '12345' # correct
   User.last.password = nil # wtf

   user.email = 'joe@example.com' #correct
   User.last.email = 'joe@example.com' #correct

有谁知道为什么 FactoryBot 没有将密码保存到数据库中?

User.last.password为零的原因是明文密码是加密的,无法访问。检查您的 schema.rb 文件...您应该只会看到一个 encrypted_password 列(我假设您使用的是 Devise)。

要检查用户是否持久化,只需检查 user.persisted?user.errors 或类似的东西来弄清楚发生了什么。