2009-08-28 9 views
8

कहा जाता है, तो राइनो मोक्स के साथ एक विधि कहने पर स्टब की संपत्ति सेट करने का कोई तरीका है।राइनो मोक्स - एक विधि को सेट करें यदि किसी विधि को

कुछ इस तरह: (बोल्ड अक्षरों में नकली कोड)

callMonitor.Expect (x => x.HangUp())। SetProperty (callMonitor.Inacall = false);

हैंगअप विधि शून्य हो जाती है और मैं वास्तव में इसे बदल नहीं सकता। लेकिन मैं चाहता हूं कि मेरा स्टब यह जान लें कि कॉल को लटका दिया गया था जब हैंगअप कहा जाता है।

उत्तर

10

स्टब कहलाते समय आप अपना कोड चलाने के लिए "कब कॉल किए गए" विधि का उपयोग कर सकते हैं; बहुत यकीन है कि यह भी मोक्स के साथ काम करना चाहिए। प्रलेखन के अनुसार, जबकॉलड कॉलबैक के लिए एक प्रतिस्थापन/अपग्रेड है।

callMonitor.Expect(x => x.HangUp()) 
.WhenCalled(invocation => callMonitor.InCall = false); 

इस पोस्ट के अंत में कुछ जानकारी: http://grahamnash.blogspot.com/2008/10/rhino-mocks-35.html

+0

अभी भी एक दुरुपयोग, भले ही विधि का नाम बदल गया हो। जब कॉलबैक की तरह कॉल किया जाता है, तो इसका उद्देश्य उन्नत उम्मीद मूल्यांकन में किया जाना चाहिए, मनमानी गणना नहीं करना। – tvanfosson

+0

इसके बजाय आप क्या सिफारिश करेंगे? एक हाथ लुढ़का परीक्षण डबल? –

+0

दरअसल, मैं परीक्षण देखना चाहता हूं। ऐसा लगता है कि अगर परीक्षण पर्याप्त केंद्रित है, तो इसकी आवश्यकता नहीं हो सकती है। – tvanfosson

1

ऐसी कुछ स्थितियां हो सकती हैं जिनके तहत आपको ऐसा करने की आवश्यकता होगी, लेकिन आम तौर पर मैं उम्मीद करता हूं कि आप बस अपने नकली/स्टब का उपयोग करेंगे ताकि यह आपके कोड के जवाब में उचित मूल्य लौटा सके। इसके लिए केवल अपवाद हैं जिनके बारे में मैं सोच सकता हूं वे आंशिक मोक्स हैं जहां आप कक्षा के एक हिस्से का परीक्षण कर रहे हैं और अन्य भागों का नकल करना चाहते हैं।

किसी संपत्ति पर नकली सेट करना बहुत आसान है।

callMonitor.Expect(x => x.HangUp()); 
callMonitor.Expect(x => x.InACall).Return(false); 

तो callMonitor एक ठूंठ, तो आप संपत्ति सीधे सेट कर सकते हैं।

callMonitor.Stub(x => x.HangUp()); 
callMonitor.InACall = false; 
1

हाँ, आप कॉलबैक विधि का उपयोग कर सकते हैं:

callMonitor.Expect(x => x.HangUp()).Callback(() => callMonitor.InCall = false); 
+0

मैं वास्तव में क्या लिखा है | (मैं 6 मिनट पहले इस सवाल के पार चलो था,) कॉलबैक तंत्र की –

+0

भयानक दुरुपयोग। यह कहना मुश्किल है, क्योंकि पोस्ट में बहुत सारी जानकारी नहीं है, लेकिन मुझे लगता है कि ओपी परीक्षणों में पर्याप्त ध्यान केंद्रित नहीं कर रहा है। Http://ayende.com/Wiki/(S(zwkmge45vdgkgvznp13mgc55))/Rhino+Mocks+Callbacks.ashx – tvanfosson

+2

FWIW पर कॉलबैक का उपयोग करने पर Ayende की सावधानी पढ़ें - कॉलबैक का मूल्यांकन यह मूल्यांकन करने के लिए किया जाना चाहिए कि उम्मीद थी या नहीं मनमाना गणना करने के लिए नहीं मिला। – tvanfosson

-1

मुझे कोई RhinoMocks विशेषज्ञ हूँ, लेकिन मेरा मानना ​​है कि यह काम करना चाहिए।

SetupResult.For(callMonitor.InACall).Return(false); 
+0

मुझे विश्वास है कि वह वह नहीं था जिसे उसने पूछा था। उन्होंने पूछा कि क्या हैंगअप विधि को एक अचूक कार्यान्वयन देने का कोई तरीका है जो हैंगअप विधि को कॉल करते समय इनकॉल प्रॉपर्टी को गलत पर सेट करता है। आपके पास क्या है, इनकॉल विधि को झूठी वापसी का कारण बनता है, भले ही हैंगअप विधि को बुलाया गया हो या नहीं। –

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