2012-01-05 99 views
3

當我使用mongoid在rails中測試驗證時遇到了問題 這是例如我的Person模型和我的Rspec測試。Rspec驗證測試(Mongoid)

class Person 
    include Mongoid::Document 

    validates :first_name , :presence => true 
    validates :last_name , :presence => true 

end 



[ :last_name, :first_name ].each do |attr| 
    it "must have a #{attr}" do 
    p = Person.new 
    p.send("#{attr}=","") 
    p.should_not be_valid 
    p.errors[attr].should == [ "can't be blank" ] 
    end 
end 

但這種測試失敗,因爲返回值爲[「不能爲空」,「不能爲空」]

expected: ["can't be blank"] 
     got: ["can't be blank", "can't be blank"] 

爲什麼在這個2級的錯誤記錄?? 我用很多模型和其他驗證規則來測試這個問題。我每次相同的結果

THX的幫助

埃裏克

回答

0

這是因爲你設置你的領域之一,以空字符串和其他保留的nil默認值。這就是爲什麼你的每次驗證都會失敗。

+0

但爲什麼我得到只有一個錯誤,當我在rails控制檯手冊()上測試這個問題.. p = Person.new p.valid? p.error [:first_name] got => [「不能爲空」] – bulleric 2012-01-05 10:22:58

+0

嗯,這很有趣。 :-) – 2012-01-05 10:25:04

+0

嗯,多數民衆贊成混淆......在我的控制檯上我每個值只有一個錯誤(第一和最後一個名稱)嗯,我的測試環境中可能有錯誤或failconfiguration ... -.- – bulleric 2012-01-05 10:38:06