Я пытаюсь написать тест, который проверяет уникальность адреса электронной почты.Ошибка теста Ruby On Rails: недостаток пароля отсутствует в новой записи
Это для создания новой учетной записи пользователя в Rails 4.0.0 и использования has_secure_password.
Я получаю эту ошибку:
User should require case sensitive unique value for email
Failure/Error: it { should validate_uniqueness_of(:email) }
RuntimeError:
Password digest missing on new record
# ./spec/models/user_spec.rb:8:in `block (2 levels) in <top (required)>'
user_spec.rb
:
require "spec_helper"
describe User do
it { should validate_presence_of(:email) }
it { should validate_presence_of(:full_name) }
it { should validate_presence_of(:password_digest) }
it { should validate_uniqueness_of(:email) }
end
А вот модель User:
class User < ActiveRecord::Base
has_secure_password
validates :email, presence: true, uniqueness: true
validates :full_name, presence: true
validates :password_digest, presence: true
end
Что означает сообщение об ошибке означает, и что я делать не так?
Если вы заказываете другое электронное письмо, возникает ли ошибка? –
Что я делаю, это запуск 'bundle exec rspec' без предоставления адреса электронной почты. Здесь, в [docs for shoulda] (http://rubydoc.info/github/thoughtbot/shoulda-matchers/master/Shoulda/Matchers/ActiveModel:validate_uniqueness_of), не похоже, что есть требование ввести адрес электронной почты , Я даже не уверен, где бы я ввел адрес электронной почты! – amorphid
Как вы создаете объект 'User' в спецификации? Можете ли вы опубликовать свой код Factory/Fixtures для этого. –