2012-12-11 15 views
57

W moim kodu miałem następujący walidacji z dopasowujących shoulda, który działa dobrze:Shoulda/RSpec dopasowujące - zatwierdzenie warunkowe

it { should validate_presence_of(:name) } 

W moim modelu, dodałem warunek do mojego walidacji:

validates_presence_of :name, :if => eligible? 

Czy można to odzwierciedlić w zatwierdzeniach?

Próbowałem, patrząc na documentation dla matek matczynych, ale nie udało się zlokalizować rozwiązania.

Wielkie dzięki!

Odpowiedz

117

Nie wydaje się, że shoulda_matchers to robi, ale jest to dość łatwe do napisać samemu ::

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 
+10

Z RSpec 3: 'przed {pozwolić (z zastrzeżeniem) .Aby otrzymać (? Kwalifikuje). and_return (true)} ' – Raf