2012-12-11 6 views
57

Nel mio codice ho avuto il seguente convalida con matchers Shoulda, che funziona bene:Shoulda/RSpec matchers - convalida condizionale

it { should validate_presence_of(:name) } 

Nel mio modello, ho aggiunto la condizione alla mia convalida:

validates_presence_of :name, :if => eligible? 

È possibile rifletterlo nelle convalide?

Ho provato a cercare documentation per gli abbinamenti di shoulda, ma non sono stato in grado di individuare la soluzione.

Grazie mille!

risposta

117

Non sembra che shoulda_matchers fa questo, ma è abbastanza facile da scrivere da soli ::

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

Con RSpec 3: 'prima {consentire (soggetto) .to ricezione (:? Ammissibili). and_return (true)} ' – Raf