User モデルの一意性をテストしたいと思います。
私の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(...)
。誰でも私を助けることができますか?