2013-03-16 6 views
8

जब मैं कोड डीबग और mockLessonplannerAFactory निर्माण के साथ लाइन पढ़ मैं त्रुटि मिलती है:निर्माता तर्क इंटरफेस के लिए पारित नहीं किया जा सकता है का मजाक उड़ाता है

Constructor arguments cannot be passed for interface mocks.

var mockSchoolclassCodeService = new Mock<ISchoolclassCodeService>(); 
var mockDateService = new Mock<IDateService>(); 
var mockLessonplannerAFactory = new Mock<ILessonplannerAFactory>(mockDateService.Object); 
var mockLessonplannerBFactory = new Mock<ILessonplannerBFactory>(mockDateService.Object); 

var service = new TimeTableService(mockUnitOfWork.Object, mockLessonplannerAFactory.Object, mockLessonplannerBFactory.Object, mockSchoolclassCodeService.Object); 

मेरे TimeTableService केवल एक अंतरफलक प्रकार की घटनाओं को स्वीकार करता है। लेकिन mockLessonplannerAFactory और BFactory ... उनके कन्स्ट्रक्टर में भी एक आईडीईटी सेवा पारित करना चाहते हैं।

मेरे कोड में क्या गलत है?

उत्तर

7

सुराग त्रुटि संदेश में है "कन्स्ट्रक्टर तर्क इंटरफ़ेस मैक्स के लिए पारित नहीं किया जा सकता है।"

इंटरफ़ेस से बनाए गए मॉक में एक डिफ़ॉल्ट कन्स्ट्रक्टर होगा क्योंकि इंटरफेस में कोई कन्स्ट्रक्टर नहीं होता है। याद रखें कि आप कंक्रीट वर्ग नहीं इंटरफ़ेस का मज़ाक उड़ा रहे हैं।

"लेकिन मॉकलेसनप्लानर फैक्ट्री और बीएफटीसी ... उनके कन्स्ट्रक्टर में भी एक आईडीईटी सेवा पास हो जाती है।"

वे दोनों इंटरफेस से मजाक कर रहे हैं, इसलिए कोई कन्स्ट्रक्टर नहीं है। नकली वर्ग एक डिफ़ॉल्ट कन्स्ट्रक्टर बनाएगा जिसे कुछ भी पारित करने की आवश्यकता नहीं है।

+0

हाँ मुझे बस mockDateService के पास को हटाकर महसूस हुआ। ऑब्जेक्ट करें कि सब कुछ ठीक काम करता है। – Elisabeth

+0

यह वास्तविक समस्या को हल नहीं करता है, आप नकली सेटअप –

+0

को कैसे संशोधित करेंगे mockLessonPlanAFactory और mockLessonPlanBFactory को कन्स्ट्रक्टर पैरामीटर की आवश्यकता नहीं है। उनके पास कोई भी विधि या संपत्ति है जो सामान्य रूप से कंक्रीट कार्यान्वयन के निर्माता में पारित वस्तुओं का उपयोग करती है, वे स्वयं नकली विधियों/गुण हैं और आप उन्हें उचित मूल्य वापस करने के लिए सेट अप करते हैं (अन्यथा आप इन वस्तुओं को वास्तव में मजाक नहीं कर रहे हैं)। आप विधियों और गुणों को स्थापित करते हैं जैसे आपको उनकी आवश्यकता होती है। –

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

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