मैं शीर्षक में तीन घटकों को संयोजित करने वाली चीजों को व्यवस्थित करने के तरीके के बारे में बहुत सारे दस्तावेज और उदाहरण पढ़ रहा हूं। मैं अपने व्यापार तर्क पर एक विधि के लिए एक परीक्षण विधि के साथ आया, लेकिन यह बहुत घबराहट और गंदे लगता है।एक्सयूनीट, ऑटोफिक्स्चर और मोक सर्वश्रेष्ठ अभ्यास
मैं इस विषय पर अधिक अनुभवी लोगों से कुछ प्रतिक्रिया प्राप्त करना चाहता हूं यह देखने के लिए कि मैं इसे कैसे सुधार सकता हूं।
यहाँ कोड है, स्पष्टीकरण इस प्रकार है:
[Fact]
public void ShouldGetItemWithSameId()
{
var fixture = new Fixture().Customize(new AutoMoqCustomization());
var facade = fixture.Freeze<Mock<IDataFacade>>();
facade.Setup(c => c.Get(It.IsAny<int>())).Returns((int i) => new Item { Key = i });
var sut = fixture.Create<BusinessLogic>();
var expected = fixture.Create<int>();
Assert.Equal(expected, sut.Get(expected).Key);
}
मेरे BusinessLogic
वर्ग निर्माता पैरामीटर, जो एक ही आईडी, सुंदर बुनियादी सामान के साथ आइटम को पुन: प्राप्त करने के लिए अपने Get(int)
विधि में जिम्मेदार है के रूप में एक IDataFacade
लेता है।
मैं IDataFacade
नकली जमा करता हूं और मैंने इसे It.IsAny<int>
में आईडी से मेल खाने वाली ऑब्जेक्ट बनाने के लिए सेट अप किया है। मैं फिर अपना एसयूटी बना देता हूं और इसका परीक्षण करता हूं। ठीक काम करता है।
मैं समझता हूँ कि अगर मैं पर विचार बातें सुधार कर सकते हैं करना चाहते हैं निम्नलिखित:
- मैं और अधिक जटिल तरीकों, एक
Query
विधि है कि कि उपयोग किया जाएगा एक वर्ग गुण का एक बहुत युक्त लेता है की तरह का परीक्षण करने के लिए है पूछताछ के प्रकार पर मिलान गुणों पर फ़िल्टर के रूप में पूछताछ की जा रही है। इस मामले में मुझे नहीं पता कि नकली के "सेटअप" भाग को सही तरीके से कैसे करना है, क्योंकि मुझे सभी को प्रारंभ करना है, या सभी के करीब, लौटा प्रकार के गुण, और इस परिदृश्य में यह एक आइटम नहीं है लेकिन एक पूरी संग्रह - सेटअप हिस्सा जगह से बाहर लगता है, मैं और अधिक तरीकों
में यह पुन: उपयोग करने में सक्षम होना चाहते हैं मैं AutoMoqData
साथ Theory
का उपयोग कर कुछ अन्य परीक्षण है, लेकिन मैं इस परीक्षण को प्राप्त करने में असमर्थ था (और मुझे लगता है कि अधिक जटिल वाले) उस दृष्टिकोण का उपयोग करते हुए, इसलिए मैंने मैन्युअल रूप से तत्काल स्थिरता के साथ सादे Fact
पर वापस स्विच किया।
किसी भी मदद की अत्यधिक सराहना की जाएगी।
क्या आपने (ऑटो) एनएसयूबिस्टिट माना है - मैंने अपने 'मोक' के साथ गलत क्या है, अपमान रवैया बहुत लंबे समय तक किया। http://weareadaptive.com/blog/2014/09/30/why-nsubstitute/ –