जब यूनिट परीक्षण, प्रत्येक परीक्षण को एक ऑब्जेक्ट का परीक्षण करने के लिए डिज़ाइन किया गया है। हालांकि सिस्टम में अधिकांश ऑब्जेक्ट्स में अन्य ऑब्जेक्ट्स होंगे जिनके साथ वे बातचीत करते हैं। मॉक ऑब्जेक्ट्स इन अन्य वस्तुओं के डमी कार्यान्वयन होते हैं, जो परीक्षण के तहत वस्तु को अलग करने के लिए उपयोग किए जाते हैं।
इसका लाभ यह है कि किसी यूनिट परीक्षण जो असफल होते हैं, आम तौर पर परीक्षण के तहत वस्तु को समस्या को अलग करते हैं। कुछ मामलों में समस्या नकली वस्तु के साथ होगी, लेकिन उन समस्याओं को पहचानने और ठीक करने के लिए सरल होना चाहिए।
नकली वस्तुओं के लिए कुछ सरल यूनिट परीक्षण भी लिखना एक विचार हो सकता है।
आमतौर पर उन्हें नकली डेटा एक्सेस परत बनाने के लिए उपयोग किया जाता है ताकि यूनिट परीक्षण डेटा स्टोर से अलगाव में चलाया जा सके।
अन्य उपयोग एमवीसी पैटर्न में नियंत्रक ऑब्जेक्ट का परीक्षण करते समय उपयोगकर्ता इंटरफ़ेस को नकल करने के लिए हो सकता है। यह UI घटकों के बेहतर स्वचालित परीक्षण की अनुमति देता है जो कुछ हद तक उपयोगकर्ता इंटरैक्शन को अनुकरण कर सकता है।
एक उदाहरण:
public interface IPersonDAO
{
Person FindById(int id);
int Count();
}
public class MockPersonDAO : IPersonDAO
{
// public so the set of people can be loaded by the unit test
public Dictionary<int, Person> _DataStore;
public MockPersonDAO()
{
_DataStore = new Dictionary<int, Person>();
}
public Person FindById(int id)
{
return _DataStore[id];
}
public int Count()
{
return _DataStore.Count;
}
}
स्रोत
2009-09-12 02:28:41
बेशक, मॉक ऑब्जेक्ट्स के * खराब * पक्ष पर, यह तथ्य यह है कि जब वास्तविक वर्ग इंटरफ़ेस बदलता है तो किसी को मोक्स ढूंढने और अपडेट करने के लिए भागना पड़ता है और इसी दौरान उन सभी "सफल" परीक्षण झूठ बोलते हैं। –
यदि आपके परीक्षणों में से एक इंटरफेस को सत्यापित करने में शामिल नहीं है तो इसे कम किया जा सकता है। वह परीक्षण विफल रहता है, आप जानते हैं कि आपके मोजे गलत होंगे। –
लेकिन यह इस तथ्य को नहीं बदलेगा कि इंटरफ़ेस के ग्राहक टूट गए हैं। – Gutzofter