2011-07-05 16 views
0

新しいユーザーが作成されると、パスワードが与えられます。パスワードの更新時にパスワードの長さをテストする方法

ユーザーがパスワードを更新または変更したときにそのケースをテストしたいと考えています。

User.rb

仕様/モデル/ user_spec.rbで
validates :password, :on => :create, 
       :presence => true, 
       :confirmation => true, 
       :length => {:within => 6..12} 

before_validation :make_password, :on => :create 

私は、次のしている:( @user =工場を行います(各)

は、 "パスワードの検証" の前に を行うについて説明します:ユーザー) 終了

it "should reject passwords that are too long" do 
    too_long_password = "a" * 13 
    @user.update_attributes(@attr.merge(:password => too_long_password, :password_confirmation => too_long_password)).should_not be_valid 
end 

エンド

動作しません。 更新プログラムをテストするにはどうすればよいですか? アイデアありがとうございます。

答えて

2

:on => :create句を検証から削除します。これを削除すると、作成および更新時に検証が有効になります。

validates :password,:presence => true, 
        :confirmation => true, 
        :length => {:within => 6..12} 

あなたは言及していないが、私が削除すぎ

+0

before_validationで必要とされる場合にも、:on => :createを削除することができます:上=>:検証しのためのあなたの指示に従って作成しますが、それを必要としますbefore_validationは、パスワードを割り当てるときと同じです。どのようにするかを学ぶことを望んでいたのは、ユーザー情報を更新するときにrspecテストを書く方法でした。 – chell

関連する問題