मैंने पहले भी पढ़ा है के रूप में, यहाँ है कि मैं क्या मानना है प्रत्येक शब्द
के लिए खड़ा है स्टब
यहाँ आप एक ज्ञात मूल्य के लिए एक विधि का परिणाम छोटा करते हैं, सिर्फ यह बताने के लिए कोड बिना मुद्दों के चलाते हैं। उदाहरण के लिए, मान लें कि आपके पास निम्न था:
public int CalculateDiskSize(string networkShareName)
{
// This method does things on a network drive.
}
आपको इस बात की परवाह नहीं है कि इस विधि का वापसी मूल्य क्या है, यह प्रासंगिक नहीं है। इसके अलावा यदि नेटवर्क ड्राइव उपलब्ध नहीं है तो इसे निष्पादित किया जा सकता है। इसलिए विधि के साथ संभावित निष्पादन समस्याओं से बचने के लिए आप परिणाम को दबाते हैं।
sut.WhenCalled(() => sut.CalculateDiskSize()).Returns(10);
नकली
एक नकली आप नकली डेटा लौट रहे हैं, या एक वस्तु का एक नकली उदाहरण बनाकर साथ:
तो आप की तरह कुछ कर रही अंत। एक क्लासिक उदाहरण भंडार वर्ग हैं। इस विधि को लें:
public int CalculateTotalSalary(IList<Employee> employees) { }
आम तौर पर उपरोक्त विधि डेटाबेस से पढ़ने वाले कर्मचारियों का संग्रह पारित किया जाएगा। हालांकि आपके यूनिट परीक्षणों में आप डेटाबेस तक नहीं पहुंचना चाहते हैं।
IList<Employee> fakeEmployees = new List<Employee>();
इसके बाद आप आइटम fakeEmployees को इस मामले में कुल वेतन जोड़ सकते हैं और अपेक्षित परिणाम पर जोर कर सकते हैं, तो आपको एक नकली कर्मचारियों की सूची बनाने के।
Mocks
नकली वस्तुओं का उपयोग करते समय आप कुछ व्यवहार, या डेटा, उन नकली वस्तुओं पर सत्यापित करने के लिए करना चाहते हैं। उदाहरण:
आप सत्यापित करने के लिए एक विशिष्ट विधि एक परीक्षण चलाने के दौरान मार डाला गया था चाहते हैं, यहाँ Moq मजाक ढांचे का उपयोग कर एक सामान्य उदाहरण है:
public void Test()
{
// Arrange.
var mock = new Mock<ISomething>();
mock.Expect(m => m.MethodToCheckIfCalled()).Verifiable();
var sut = new ThingToTest();
// Act.
sut.DoSomething(mock.Object);
// Assert
mock.Verify(m => m.MethodToCheckIfCalled());
}
उम्मीद है कि इसके बाद के संस्करण चीज़ें थोड़ी स्पष्ट मदद करता है।
संपादित करें: रॉय ओशरोव टेस्ट संचालित विकास का एक अच्छी तरह से ज्ञात वकील है, और उसके पास इस विषय पर कुछ अच्छी जानकारी है।आप इसे बहुत उपयोगी हो सकते हैं:
http://artofunittesting.com/
पढ़ें इस http://xunitpatterns.com/Mocks,%20Fakes,%20Stubs%20and%20Dummies.html और इस http://martinfowler.com/articles/mocksArentStubs.html – blank
और तुम पर हैं, जबकि यह आपको यह भी पढ़ सकता है http://www.mockobjects.com/files/mockrolesnotobjects.pdf – blank
मुझे उम्मीद है कि आप वाणिज्यिक क्षमा करेंगे, लेकिन हमने एक संपूर्ण पुस्तक "ग्रोइंग ऑब्जेक्ट ओरिएंटेड सॉफ्टवेयर" लिखा है, जो प्रेरणा को संबोधित करता है मोजे का उपयोग करना –