2010-04-10 119 views
1

我試圖測試我成功創建一個新的用戶登錄後(使用authlogic)。我添加了幾個新的字段給用戶,所以只是想確保用戶保存正確。Authlogic和密碼和密碼確認屬性 - 無法訪問?

問題是儘管創建了一個有效的用戶工廠,每當我試圖抓住其屬性發布到創建方法,密碼和密碼確認都被忽略。我認爲這是一種authlogic在後臺執行的安全方法。這導致驗證失敗並且測試失敗。

我想知道我該如何解決這個問題?我可以只用手輸入屬性,但看起來不太乾燥。

context "on POST to :create" do 
      context "on posting a valid user" do 
       setup do 
        @user = Factory.build(:user) 
        post :create, :user => @user.attributes 
       end 
       should "be valid" do 
        assert @user.valid? 
       end 
       should_redirect_to("users sentences index page") { sentences_path() } 
       should "add user to the db" do 
        assert User.find_by_username(@user.username) 
       end 
      end 


##User factory 
Factory.define :user do |f| 
    f.username {Factory.next(:username) } 
    f.email { Factory.next(:email)} 
    f.password_confirmation "password" 
    f.password "password" 
    f.native_language {|nl| nl.association(:language)} 
    f.second_language {|nl| nl.association(:language)} 
end 

回答

2

您絕對無法從用戶對象讀取密碼和password_confirmation。您需要合併:password:password_confirmation@user.attributes散列。如果將該散列存儲在其他工廠定義的某處,那麼它不會超級乾燥,但它比將其硬編碼到測試中要好。

+0

感謝您對我的確認。只是將它們與屬性哈希合併。謝謝。 – robodisco 2010-04-11 13:41:21