Почему FactoryBot не сохраняет пароли в тестовой базе данных? - PullRequest
0 голосов
/ 24 мая 2019

Я только что столкнулся с ситуацией, когда мне пришлось разобраться, почему мой тестовый пользователь не смог войти в системный тест.

Оказалось, что пароль для пользователя был равен 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?

1 Ответ

1 голос
/ 24 мая 2019

Причина, по которой User.last.password равен нулю, заключается в том, что простой текстовый пароль зашифрован и недоступен. Проверьте ваш schema.rb файл ... вы должны увидеть только столбец encrypted_password (я предполагаю, что вы используете Devise).

Чтобы проверить, сохраняется ли пользователь, просто отметьте user.persisted?, user.errors или что-то в этом роде, чтобы выяснить, что происходит.

...