आपके विशिष्ट प्रश्न का उत्तर देने के लिए: नहीं, ऐसी कोई लाइब्रेरी नहीं है जो आपको I / O कॉल (जो मुझे पता है) की फाइल को मॉक करने देगी। इसका मतलब यह है कि आपके प्रकारों का परीक्षण करने वाली "उचित" इकाई के लिए आवश्यक होगा कि आप इस प्रतिबंध को तब ध्यान में रखें जब आप अपने प्रकारों को परिभाषित करते हैं।
त्वरित पक्ष ध्यान दें कि मैं "उचित" इकाई परीक्षण को कैसे परिभाषित करता हूं। मेरा मानना है कि यूनिट परीक्षणों से यह पुष्टि होनी चाहिए कि आपको अपेक्षित आउटपुट मिले (एक अपवाद, किसी विधि पर कॉल आदि) ज्ञात इनपुट प्रदान किए जाएं। यह आपको इनपुट और / या इनपुट राज्यों के एक सेट के रूप में अपनी इकाई परीक्षण स्थितियों को सेट करने की अनुमति देता है। सबसे अच्छा तरीका है कि मैं ऐसा करने के लिए इंटरफ़ेस-आधारित सेवाओं और निर्भरता इंजेक्शन का उपयोग कर रहा हूं ताकि एक प्रकार के लिए बाहरी प्रत्येक जिम्मेदारी एक निर्माता या संपत्ति के माध्यम से पारित इंटरफ़ेस के माध्यम से प्रदान की जाए।
तो, इसे ध्यान में रखते हुए, अपने प्रश्न पर वापस जाएं। मैंने IFileSystemService
एक FileSystemService
कार्यान्वयन के साथ एक इंटरफ़ेस बनाकर फाइल सिस्टम कॉल का मजाक उड़ाया है जो कि mscorlib फाइल सिस्टम के तरीकों का एक पहलू है। मेरा कोड तब IFileSystemService
mscorlib प्रकारों के बजाय उपयोग करता है । यह मुझे अपने मानक में प्लग करने की अनुमति देता है FileSystemService
जब एप्लिकेशन चल रहा होता है या IFileSystemService
मेरी इकाई परीक्षणों में मॉक होता है । एप्लिकेशन कोड समान है कि यह कैसे चलाया जाता है, लेकिन अंतर्निहित आधारभूत संरचना उस कोड को आसानी से जांचने की अनुमति देती है।
मैं स्वीकार करता हूं कि यह mscorlib फ़ाइल सिस्टम ऑब्जेक्ट्स के आसपास रैपर का उपयोग करने के लिए एक दर्द है, लेकिन इन विशिष्ट परिदृश्यों में, यह अतिरिक्त काम के लायक है क्योंकि परीक्षण इतना आसान और अधिक विश्वसनीय हो जाता है।