2013-01-20 115 views
1

這裏是失敗的測試:爲什麼我的rspec測試不能進行用戶確認?

context "when password does not match confirmation" do 
    before { build(:user, :password_confirmation => 'mismatch') } 
    it { should_not be_valid } 
end 

我使用工廠女孩對這個測試套件build方法。

我的用戶模型:

class User < ActiveRecord::Base 
    attr_accessible :email, :name, :password, :password_confirmation 
    has_secure_password 

    validates :password_confirmation, presence: true 
    validates :password, presence: true, length: { minimum: 5 } 
end 

UPDATE:你不需要標註:使用密碼字段:確認=>使用has_secure_password時如此。這是照顧:看到源代碼:https://github.com/rails/rails/blob/master/activemodel/lib/active_model/secure_password.rb

驗證工作正常 - 當我嘗試在控制檯創建一個新用戶時,我得到正確的錯誤消息。那麼爲什麼測試失敗?錯誤在哪裏?

回答

3

驗證無法正常工作,您無法驗證password_confirmationpassword匹配。有關更多信息,請參見http://guides.rubyonrails.org/active_record_validations_callbacks.html#confirmation

此外,您需要確保您正在測試您想要測試的內容 - 這些測試的主題是build(:user),當它需要爲build(:user, password_confirmation: 'mismatch')時。將上面的代碼中的before更改爲subject,以正確設置測試的主題。

+0

因此,我應該在哪裏放置':confirmation => true'? –

+0

如指南所述,在驗證任何領域你想驗證的確認。 – sevenseacat

+0

已更新的代碼上面,它仍然不工作 - 測試一直失敗 –

相關問題