In my code I had the following validation with Shoulda matchers, which works fine:
it { should validate_presence_of(:name) }
In my model, I've added the condition to my validation:
validates_presence_of :name, :if => eligible?
Is it possible to reflect it in the validations?
I've tried looking at documentation for shoulda matchers, but haven't been able to locate the solution.
Many thanks!
zetetic
It doesn't appear that shoulda_matchers does this, but it's easy enough to write it yourself::
context "if eligible" do
before { allow(subject).to receive(:eligible?).and_return(true) }
it { should validate_presence_of(:name) }
end
context "if ineligible" do
before { allow(subject).to receive(:eligible?).and_return(false) }
it { should_not validate_presence_of(:name) }
end
来源:https://stackoverflow.com/questions/13812717/shoulda-rspec-matchers-conditional-validation