2012-12-11 13 views
57

İyiyim Shoulda matchers ile aşağıdaki doğrulama işleri vardı ki:Shoulda/RSpec matchers - koşullu doğrulama Benim kod

:

Benim modelinde
it { should validate_presence_of(:name) } 

, benim doğrulama için koşul ekledik

validates_presence_of :name, :if => eligible? 

Doğrulamalara yansıtmak mümkün mü?

Shoulda eşleştiricileri için documentation'a bakmayı denedim, ancak bu çözümü bulamadınız.

Çok teşekkürler!

cevap

117

O shoulda_matchers bunu yapar görünmüyor, ancak RSpec 3 ile kendiniz ::

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

yazmak kolay yeter: 'önce {(konu) almak .to izin (?: Uygun). and_return (true)} – Raf