का उपयोग करके किसी फ़ंक्शन को कॉल किया जाता है तो मेरे वर्तमान रेल 3 ऐप में, मैं यह सुनिश्चित करने के लिए कुछ यूनिट परीक्षण कर रहा हूं कि S3 को अपडेट करने के लिए कॉल केवल कुछ स्थितियों के तहत ही किए जाते हैं। मैं परीक्षण के दौरान एस 3 को अपडेट नहीं करना चाहता, इसलिए मैं व्यवहार को रोकने के लिए मोचा का उपयोग कर रहा हूं। क्या यह सुनिश्चित करने का कोई तरीका है कि मोचा का उपयोग करके एक समारोह कहा जाता है? मैं उम्मीदें पर एक नज़र लिया है, और जब तक मैं गलत यह कर रहा हूँ, ऐसा लगता है मैं क्या करना है: एक त्रुटि हो जाएगा ताकि झंडा अगर function_name है:परीक्षण यदि मोचा
object.expects(:function_name).once
बहरहाल, यह वांछित परिणाम नहीं करता है दो बार बुलाया जाता है (जो वांछित है), यह एक त्रुटि को ध्वजांकित नहीं करेगा अगर इसे केवल एक बार कहा जाता है (जैसा कि यह होना चाहिए), लेकिन समस्या यह है कि त्रुटि को ध्वजांकित नहीं किया गया है यदि फ़ंक्शन को शून्य बार कहा जाता है। मुझे यह सुनिश्चित करने के लिए एक तरीका चाहिए कि इसे बुलाया जाए। ऐसा लगता है जैसे मोचा को इसका समर्थन करना चाहिए, इसलिए शायद मैं इसे गलत कर रहा हूं। किसी भी तरह की सहायता का स्वागत किया जाएगा।
***** सुधार:
बाहर कर देता है कि मैं इसे सही कर रहा था, कि mocha_verify प्रक्रिया स्वतः ही नहीं कहा जा रहा था को छोड़कर। किसी को भी जो एक समान समस्या हो रही है के लिए, यहाँ पर ओले मोर्टेन एमंडसन के जवाब की जाँच: Mocha Mock Carries To Another Test
आपको चाहिए स्वीकृत के रूप में एक उत्तर चिह्नित करें। इस तरह आप अच्छे लोगों के समय बर्बाद नहीं करते हैं, जो "अनुत्तरित क्यू" के लिए ब्राउज़ करते हैं, निःस्वार्थ रूप से आपके और मेरे जैसे लोगों की सहायता करते हैं। – oma