2012-12-11 7 views
57

In meinem Code ich mit Shoulda Matcher die folgende Validierung hatte, die funktioniert:Shoulda/RSpec Matcher - bedingte Validierung

it { should validate_presence_of(:name) } 

In meinem Modell habe ich den Zustand meiner Validierung hinzugefügt:

validates_presence_of :name, :if => eligible? 

Ist es möglich, es in den Validierungen zu reflektieren?

Ich habe versucht, documentation für soma Matchers zu suchen, aber nicht in der Lage gewesen, die Lösung zu finden.

Vielen Dank!

Antwort

117

Es scheint nicht, dass shoulda_matchers dies tut, aber es ist einfach genug, um es selbst zu schreiben ::

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

Mit RSpec 3: 'vor {allow (subject) .to erhalten? (: Förderfähig). and_return (wahr)} ' – Raf

Verwandte Themen