2012-12-11 8 views
57

मेरी कोड में मैं चाहिये matchers साथ निम्नलिखित मान्यता है, जो ठीक काम करता है था:चाहिये/RSpec matchers - सशर्त मान्यता

:

it { should validate_presence_of(:name) } 

मेरे मॉडल में, मैं अपने सत्यापन के लिए शर्त जोड़ दिया है

validates_presence_of :name, :if => eligible? 

क्या यह मान्यताओं में इसे प्रतिबिंबित करना संभव है?

मैंने कंधे मैचर्स के लिए documentation को देखने का प्रयास किया है, लेकिन समाधान का पता लगाने में सक्षम नहीं हैं।

बहुत धन्यवाद!

उत्तर

117

यह shoulda_matchers करता है कि प्रकट नहीं होता है, लेकिन यह यह अपने आप ::

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

लिखने के RSpec 3 के साथ आसान काफी है: 'पहले {(विषय) प्राप्त करें.अभियान अनुमति देते हैं (: पात्र)। and_return (सत्य)} ' – Raf

संबंधित मुद्दे