0
我有密码自定义的验证,需要一个updating_password场从控制器与Rails的控制器输入测试条件验证
attr_accessor :updating_password
validates :password, presence: true, if: :should_validate_password?
validates :password, length: { minimum: 6 }, if: :should_validate_password?
def should_validate_password?
updating_password || new_record?
end
我想存根出updating_password场在我的用户模型RSpec的测试,像
before(:each) do
@user_valid = FactoryGirl.create(:user)
end
it "validates for password when updating_password is true" do
old_password = @user_valid.password
subject { @user_valid }
allow(subject).to receive(:updating_password).and_return(true)
@user_valid.update(password: "short", password_confirmation: "short")
expect(@user_valid.password).to eql(old_password)
end
在这种情况下,密码不应该更新,因为它太短,但测试失败。任何帮助,将不胜感激