मैं IPrincipal
पर लिखे गए एक विस्तार विधि के लिए कुछ यूनिट परीक्षण लिख रहा हूं। सहायता के लिए, सहायक वर्गों के एक जोड़े (इंटरफेस की नहीं लागू सदस्यों के लिए कुछ कोड संक्षिप्तता के लिए हटा दिया गया है) बनाया है:आप केवल पढ़ने वाले सदस्य वाले इंटरफ़ेस के लिए यूनिट-परीक्षण स्टब कैसे बनाते हैं?
public class IPrincipalStub : IPrincipal
{
private IIdentity identityStub = new IIdentityStub();
public IIdentity Identity
{
get { return identityStub; }
set { identityStub = value; }
}
}
public class IIdentityStub : IIdentity
{
public string Name { get; set; } // BZZZT!!!
}
हालांकि, IIdentity
इंटरफ़ेस में Name
संपत्ति केवल पढ़ने के लिए किया जाता है (IIDentity
इंटरफ़ेस एक गेटर निर्दिष्ट करता है लेकिन नाम संपत्ति के लिए एक सेटटर नहीं)।
इंटरफ़ेस ने इसे केवल पढ़ने-योग्य संपत्ति के रूप में परिभाषित करने के लिए परीक्षण उद्देश्यों के लिए अपनी स्टब ऑब्जेक्ट में नाम संपत्ति कैसे सेट कर सकता हूं?
कन्स्ट्रक्टर? i.e 'IIdentityStub' में एक पैरामीटरयुक्त कन्स्ट्रक्टर होगा जो पैरामीटर के रूप में नाम लेता है। – shahkalpesh
क्या आपका "BZZZT" संकलित त्रुटि का संदर्भ देता है? मैं आपके नमूने को ठीक से संकलित करने में सक्षम था (पहचान संपत्ति पर डब्ल्यू/अर्ध-कॉलन, जो है)। – micahtan
@micahtan: हाँ, लेकिन जब आप इसके खिलाफ एक परीक्षण लिखने का प्रयास करते हैं, और परीक्षण में 'नाम' का मूल्य निर्धारित करते हैं, तो संकलक शिकायत करेगा कि 'नाम' केवल पढ़ने के लिए है, क्योंकि' नाम 'संपत्ति ' IIDentity' में एक सेटर परिभाषित नहीं है। –