जब मैं कोड डीबग और 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 ... उनके कन्स्ट्रक्टर में भी एक आईडीईटी सेवा पारित करना चाहते हैं।
मेरे कोड में क्या गलत है?
हाँ मुझे बस mockDateService के पास को हटाकर महसूस हुआ। ऑब्जेक्ट करें कि सब कुछ ठीक काम करता है। – Elisabeth
यह वास्तविक समस्या को हल नहीं करता है, आप नकली सेटअप –
को कैसे संशोधित करेंगे mockLessonPlanAFactory और mockLessonPlanBFactory को कन्स्ट्रक्टर पैरामीटर की आवश्यकता नहीं है। उनके पास कोई भी विधि या संपत्ति है जो सामान्य रूप से कंक्रीट कार्यान्वयन के निर्माता में पारित वस्तुओं का उपयोग करती है, वे स्वयं नकली विधियों/गुण हैं और आप उन्हें उचित मूल्य वापस करने के लिए सेट अप करते हैं (अन्यथा आप इन वस्तुओं को वास्तव में मजाक नहीं कर रहे हैं)। आप विधियों और गुणों को स्थापित करते हैं जैसे आपको उनकी आवश्यकता होती है। –