0

次のようなモデルがあります。

class User
   include Mongoid::Document

   field :email

   validate :email, presence: true, uniqueness: true
end

そして、私は次のようなテストを持っています...

it { User.new.should_not be_valid }
it { FactoryGirl.build(:user).should be_valid }
it { should validate_presence_of :email }
it { should validate_uniqueness_of :email }

これらはどちらも、.valid?メソッドが呼び出されたときにデータベースにアクセスしたいと考えています。それを抽象化できる方法はありますか?一意性バリデーターは、他の多くの人々によって徹底的にテストされているため、上記の最後の行で十分です。

モデル スペック中に DB を実行する必要がある場合は、それほど大きな問題ではありませんが、できれば避けたいと思います。

4

1 に答える 1

0

.valid?メソッドは引き続きActiveModelで機能するはずです。Mongoidに何が含まれているかはよくわかりませんが、ActiveModelが必要です。include ActiveModel:Validations

これは明確ではなかったかもしれませんが、ActiveModelはデータベースにアクセスしようとはしません。

于 2013-01-14T01:46:24.897 に答える