2011-03-16 12 views
7

के साथ मूल विधि के लिए विधि कॉल और प्रॉक्सी की अपेक्षा करें मैं बीडीडी गायब के साथ खोजना चाहता हूं: ActiveRecord :: Base.find विधि के लिए पैरा शामिल करें।आरएसपीसी

ActiveRecord::Base.should_receive(:find).once.and_proxy_to_original_method 
parent = SomeClass.find 34 
parent.child.should be_loaded 
parent.other_children.should be_loaded 

#child या #other_children संघों उत्सुक लोड नहीं कर रहे हैं, उम्मीद कुछ के साथ विफल चाहिए:: "अपेक्षित ActiveRecord :: Base.find लागू किया जा करने के लिए तो मेरा विचार इस तरह कल्पना कुछ में है एक बार लेकिन इसे निम्नलिखित तर्कों के साथ 2 बार बार बुलाया गया था: 1. ...; 2. ... "

क्या किसी को पता है कि ऐसा कुछ मैचर है जो इस तरह काम करता है या इसे कैसे बनाया जाए।

धन्यवाद

+0

मुझे एक ही समस्या है। वास्तव में एक इच्छा थी। वैध होने पर परीक्षण के लिए उपयोगी? पदानुक्रम को सत्यापित/सहेजने के लिए एक आश्रित मॉडल या कुछ पर लागू किया गया था। –

+0

का संभावित डुप्लिकेट [क्या रुपेक के \ nrereive \ 'receive \\?] (Http://stackoverflow.com/questions/12159536/is-there-a-less-intrusive-alternative-to-rspecs के लिए कम घुसपैठ करने वाला विकल्प है -शोल्ड-प्राप्त) – lulalala

उत्तर

5

मुझे लगता है कि मैं एक ही समस्या here था। आपके विशेष मामले में मैं ऐसा करता हूं जो मुझे काफी साफ लगता है।

original_method = ActiveRecord::Base.method(:find) 
ActiveRecord::Base.should_receive(:find).once do (*args) 
    original_method.call(*args) 
end 

मेरा मानना ​​है कि आप, and_proxy_to_original_method विधि शामिल करने के लिए Rspec Mocks::MessageExpectation वर्ग का विस्तार कर सकता है बहुत कठिन नहीं होना चाहिए, लेकिन मैं नहीं देखा है।

+0

हमम ... मुझे विचार पसंद है। इसे जांच लेंगे और परिणाम के साथ वापस आ जाएगा। धन्यवाद – BurmajaM