У меня есть собственный валидатор для пароля, который принимает 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 поле в моей модели User тесте 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
В этом случае пароль не должен обновляться, поскольку он слишком короткий, но тест не работает. Любая помощь будет оценена