2011-02-17 25 views
0

我試圖符合規範我的模型的驗證,這是我的模型規格驗證錯誤使用RSpec + CouchRest_Model

class Account < CouchRest::Model::Base 
     property :user, String 
     property :password, String 
     property :name, String 
     property :email, String 
     property :activate, TrueClass, :default => true 
     validates_presence_of :user, :password, :name, :email 
     validates_length_of :password, :in => 6..15, :if => lambda{|account| !account.password.blank? } 
     validates_uniqueness_of :user, :if => (lambda{|account| !account.user.blank?}) 
    end 

,然後進入我model_spec我試圖做到這一點

account = Account.new 
account.should have(1).error_on_presence_of(:email) 

但代替1錯誤,我得到6
我認爲這可能是由couchrest驗證造成的,但不確定。

有人能爲我澄清這個嗎?

PS:如果我驗證了同樣的模式進入控制檯我得到相應的4種空性質

回答

2

看來你期待1個錯誤,但實際上有6要弄清楚什麼是錯誤4個錯誤哈希值,你可以設置一個臨時的期望:

`account.errors.should == {} 

然後例如將失敗和RSpec將打印錯誤的哈希值,你可以看到實際上正在生成該錯誤。

+0

感謝您的回答,我意識到該方法.valid?不知何故,它沒有被調用,'account.errors.should == {}'的結果是模型加couchrest類型的所有屬性。所以我只是一直工作,逐場驗證。 – 2011-02-20 22:28:53