का उपयोग करके एक डेटा सेट के मैक्स बनाने के लिए एमओक का उपयोग कर।एक अभिव्यक्ति <Func<,>> प्रतिबिंब
मैंने एक छोटी सहायक कक्षा बनाई है जो मुझे डेटाबेस के बजाय मेमोरी स्टोरेज में रखने की अनुमति देती है जो इकाई को हवा का परीक्षण करती है। इस तरह से मैं अपने नकली डेटा सेट से आइटम जोड़ और निकाल सकता हूं, इससे मुझे मेरी डालने का परीक्षण करने और सेवा कॉल हटाने की अनुमति मिलती है।
नकली के सेटअप के दौरान मैं एक पंक्ति है कि तो मैं प्रतिबिंब का उपयोग कर इस स्थापना चरण को पूरा करना चाहते हैं संपत्तियों की एक बहुत है निम्नलिखित
this.Setup(i => i.AcademicCycles).Returns(mockStore.GetList<AcademicCycle>());
मेरे नकली की तरह लग रहा है। मैंने प्रतिबिंब के माध्यम से काम कर रहे प्रक्रिया के Returns
भाग में कामयाब रहा है लेकिन मैं लैम्ब्डा विधि पर Setup
पर फंस गया हूं।
Setup
एक
Expression<Func<GoalsModelUnitOfWork, IQueryable<AcademicCycle>>>
कि i => i.AcademicCycles
से मेल खाती है लेता है और मैं इस गतिशील बनाने के लिए करना चाहते हैं। प्रतिबिंब का उपयोग करना मैं निम्नलिखित है:
संपत्ति के नाम: "AcademicCycles"
प्रकार IQueryable<AcademicCycle>
प्रकार AcademicCycle
मैं भी लैम्ब्डा बयान में i
का उदाहरण है जो GoalsModelUnitOfWork
असल Expression.Lambda का परिणाम 'अभिव्यक्ति लिए डाली जा सकती है>' यदि आप स्थिर पैरामीटर जानते हैं और वापस जाने के प्रकार: यदि मैं उस के बारे में सही हूँ, आप थोड़ा आसान बनाने में कर सकता है। आंतरिक रूप से अभिव्यक्ति। लैम्ब्डा उपयुक्त 'अभिव्यक्ति >' प्रकार का एक उदाहरण बनाता है, भले ही अभिव्यक्ति का रिटर्न प्रकार। लैम्ब्डा को कमजोर टाइप किया गया हो। –
itowlson
इसके अलावा मुझे नहीं लगता कि आपको मध्य दो लाइनों की आवश्यकता है। एक सरल मामले में परीक्षण से, 'var lambda = Expression.Lambda (पैरामीटर, प्रॉपर्टी)' काम करना चाहिए (अभिव्यक्ति। लैम्ब्डा प्रकार और गुणों से प्रतिनिधि प्रकार का काम करेगा)। हालांकि मेरा टेस्ट कोड आपके लिए थोड़ा अलग था और सरल प्रकार का उपयोग करता था, इसलिए आपका माइलेज भिन्न हो सकता है ...! – itowlson