2010-06-01 12 views
51

मान लें कि मैं बाद में उपयोग के लिए सेट प्रॉपर्टी को अपने क्षेत्र में स्टोर करने के लिए एक सेटटर पर कॉलबैक बनाने के लिए मोक का उपयोग करना चाहता हूं।सेटअपअप() अप्रचलित है। क्या जगह में?

myMock.SetupSet(x => x.MyProperty).Callback(value => myLocalVariable = value); 

और यह बस एक ठीक काम करता है: - (। काल्पनिक उदाहरण है, लेकिन यह सवाल की बात करने के हो जाता है) मैं कुछ इस तरह कर सकता है। हालांकि, Intellisense के अनुसार SetupSet अप्रचलित है। लेकिन यह नहीं कहता कि एक विकल्प के रूप में क्या उपयोग किया जाना चाहिए। मुझे पता है कि moq SetupProperty प्रदान करता है जो एक बैकिंग फ़ील्ड के साथ संपत्ति को स्वत: कर देगा। लेकिन यह वह नहीं है जिसे मैं ढूंढ रहा हूं। मैं सेट वैल्यू को अपने वैरिएबल में कैप्चर करना चाहता हूं। गैर-अप्रचलित विधियों का उपयोग करके मुझे यह कैसे करना चाहिए?

उत्तर

75

मैं Moq संस्करण 3.0.204.1 और SetupSet का उपयोग कर रहा हूं, मेरे लिए अप्रचलित नहीं है। हालांकि, MockLegacyExtensions में स्थित SetupSet अधिभार कुछ जोड़े हैं। आप उन लोगों का उपयोग करने से बच सकते हैं और SetupSet का उपयोग कर सकते हैं जो Mock कक्षा पर परिभाषित किया गया है।

अंतर सूक्ष्म है और आपको SetupSet पैरामीटर के रूप में Func<T, TProperty> के विपरीत उपयोग करने की आवश्यकता है।

नीचे कॉल गैर पदावनत अधिभार लागू करेगा:

myMock.SetupSet(p => p.MyProperty = It.IsAny<string>()).Callback<string>(value => myLocalVariable = value); 

चाल It.IsAny<string>, जो किसी भी मूल्य के साथ एक सेटर कॉल अवरोधन जाएगा उपयोग करने के लिए है।

+1

यह एक शर्म की बात है कि आपको 'कॉलबैक <> ' – RobSiklos

+0

@RobSiklos के लिए सामान्य तर्क निर्दिष्ट करने की आवश्यकता है क्या शर्म की बात है? [क्विक स्टार्ट] (https://code.google.com/p/moq/wiki/QuickStart) में इसे _alternate समकक्ष सामान्य विधि वाक्यविन्यास – Yaro

+4

@RobSiklos कहा जाता है आप 'कॉलबैक ((स्ट्रिंग मान) => myLocalVariable = value) लिख सकते हैं ' – LazyTarget

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