Я хотел бы протестировать uniquness модели пользователя.rspec mongoid проверка уникальности
Моя User
модель класса выглядит следующим образом:
class User
include Mongoid::Document
field :email, type: String
embeds_one :details
validates :email,
presence: true,
uniqueness: true,
format: {
with: /\A([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z0-9]{2,})\Z/i,
on: :create
},
length: { in: 6..50 }
end
Мой RSpec тест, который относится к модели выглядит следующим образом:
...
before(:each) do
FactoryGirl.create(:user, email: taken_mail)
end
it "with an already used email" do
expect(FactoryGirl.create(:user, email: taken_mail)).to_not be_valid
end
После я выполнил bundle exec rspec
это всегда вызывает следующую ошибку вместо того, чтобы прошло с успех:
Failure/Error: expect(FactoryGirl.create(:user, email: taken_mail)).to_not be_valid
Mongoid::Errors::Validations:
Problem:
Validation of User failed.
Summary:
The following errors were found: Email is already taken
Resolution:
Try persisting the document with valid data or remove the validations.
Если я использую этот она проходит с успехом:
it { should validate_uniqueness_of(:email) }
Я хотел бы использовать expect(...)
. Кто-нибудь может мне помочь?
Что делать, если вы попробуете: 'ожидать (FactoryGirl.build (: user, email: taken_mail)). To_not be_valid'? используя сборку вместо создания – Alireza
Он работает правильно, и тесты прошли, но я не знаю, почему возникает ошибка при использовании метода 'create'. Что делать, если я хочу использовать 'FactoryGirl.create (...)' Если вы оставите это в ответе, я дам вам точку. – Mark