如何在更新密码时测试密码长度

时间:2011-07-05 05:23:46

标签: ruby-on-rails testing rspec2

创建新用户时,会给他们一个密码。

我想在用户更新或更改密码时测试案例。

User.rb

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

before_validation :make_password, :on => :create

在spec / models / user_spec.rb中,我有以下内容:

描述“密码验证”     之前(:每个)做       @user = Factory(: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

不起作用。 现在我该如何测试更新? 任何想法都赞赏。

1 个答案:

答案 0 :(得分:2)

从验证中删除:on => :create子句。删除它将在创建和更新期间激活验证。

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

您尚未提及,但如果在before_validation中也需要,您也可以删除:on => :create