c# - Set method does not set the properties of an abstract object through Moq -
मेरे पास SetRange विधि है, जो StartDate और समाप्ति दिनांक गुण:
सार्वजनिक वर्चुअल शून्य सेटरेंज (डेटटाइम? स्टार्टडेट, डेटटाइम? एंडडेट) {this.startdown = startDate; This.EndDate = endDate; } मेरे स्टब ऑब्जेक्ट पर टेस्ट में, नीचे StartDate और EndDate गुण सेट करेगा:
< कोड> var dateRangeEntityStub = नया नकली & lt; दिनांकरेंज एंटीटीबेस & gt; (); dateRangeEntityStub.SetupAllProperties (); // कम से कम 1 तारीख सीमा एंटीटीस्ट। ऑब्जेक्ट .सेटरेन्ज (डेटटाइम.अब। जोड़े गए साल (-1), डेटटाइम.Now); // अपमान 2 तारीखकौजइन्तिटीस्टब .सेटअप (x = & gt; x.SetRange (दिनांकटाइम.अब। जोड़ा गया युग (-1), दिनांकटाइम.अब));
लेकिन सामान्य सेटर काम करेगा:
dateRangeEntityStub.Object.EndDate = DateTime.Now; क्यों SetRange विधि स्टब पर गुण सेट नहीं करती?
Moq प्रत्येक आभासी विधि / संपत्ति को ओवरराइड करता है और उसके लिए इसके स्वयं के क्रियान्वयन का उपयोग करेगा
इसलिए यदि आप अपने SetRange विधि का मूल व्यवहार रखना चाहते हैं, तो आपको CallBase से true को सेट करें मॉक जो आपके मूल कोड को भी लागू करने के लिए मूक को कहता है:
var dateRangeEntityStub = नया नकली & lt; DateRangeEntityBase & gt; () {CallBase = true}; त्वरित स्टार्ट के अनुभाग में भी देखें: अनुभाग
Comments
Post a Comment