FluentNHibernate-1.1.0.685 (NHibernate-2.1.2.4000) के विरुद्ध एक रिपॉज़िटरी का निम्न परीक्षण है। सत्र और एनएच कॉन्फ़िग परीक्षा में स्थिरता द्वारा प्रदान की जाती हैं।
[टेस्ट] सार्वजनिक अमान्य हैडसेट () {var कर्मचारी = CreateEmployee (); session.Clear (); Var बदलई कर्मचारी = _testRepository (employee.id); बदलते कर्मचारी कर्मचारी। प्रथम नाम = "रिंगो"; _testRepository.SaveOrUpdate (changedEmployee); session.Flush (); session.Clear (); // इस कॉल को खींचने से परीक्षा पास हो जाएगी Var कर्मचारी = (आईआईएलआईटी) _testRepository.GetAll (); आश्वासन। (बदलते कर्मचारी, कर्मचारियों) बदलता है; Assert.IsFalse (employees.Contains (कर्मचारी)); } कर्मचारी बनाएँ कर्मचारी () {var ई = {आईडी = 1, प्रथम नाम = "जॉर्ज", अंतिमनाम = "वॉशिंगटन"}; _testRepository.SaveOrUpdate (ई); session.Flush (); वापसी ई; } यह परीक्षण पारित होगा अगर मैं दूसरे कॉल को साफ़ करने के लिए () से छुटकारा दिलाता हूं। अगर मैं कॉल को हालांकि छोड़ देता हूं तो परीक्षण निम्न से असफल हो जायेगा:
विफल: अपेक्षित: संग्रह युक्त & lt; कर्मचारी & gt; लेकिन था: & lt; & LT; कर्मचारी & gt; & Gt;
बहुत उपयोगी नहीं एक तरफ छोड़कर, मुझे क्लियर करने के लिए दूसरी कॉल को निकालने की आवश्यकता क्यों है?
फ्लश () डीबी के साथ समन्वयित होगा और, अगर मैं सही ढंग से समझता हूं, तो साफ़ () सत्र कैश को बेदख़ल करेगा I ऐसा लगता है कि यह वास्तव में ऐसा व्यवहार है जिससे मुझे यकीन हो कि मैं बासी डेटा के खिलाफ परीक्षण नहीं कर रहा हूं। वास्तव में मैं उम्मीद करता हूं कि टेस्ट को बिना कॉल को साफ़ करें () और फिर भी यह मामला नहीं है। क्या कोई इस व्यवहार पर कुछ प्रकाश डाल सकता है?
(ध्यान दें: यह प्रैगप्रोग पुस्तक "टेस्ट ड्राइव एएसपी.नेट एमवीसी" के अध्याय 10 में मिली रिपॉजिटरी टेस्ट पर एक भिन्नता है। अच्छी किताब बीटीड।) < / P>
क्योंकि आपकी विधि विधि संदर्भ समानता की जांच कर रही है, यद्यपि आप संभवत: आईडी का उपयोग करते हुए समानता की जांच करना चाहते हैं या कर्मचारी का नाम।
कॉलिंग साफ़ () NHibernate के सत्र से बदलते कर्मचारी के संदर्भ को हटा देगा (NHibernate इस संदर्भ को और अधिक उपयोग नहीं करेगा)। इसका मतलब है कि जब आप कर्मचारियों को पुनः लोड करते हैं, तो बदलते कर्मचारी का एक नया उदाहरण बनाया जाता है। यह संदर्भ मूल संदर्भित कर्मचारी ऑब्जेक्ट के साथ एक संदर्भ समानता जांच पास नहीं करेगा (हालांकि इसके सभी गुण समान होना चाहिए)।
साफ़ () के बिना, NHibernate बदलते कर्मचारी ऑब्जेक्ट का संदर्भ रखता है और यह वही है संदर्भ GetAll विधि द्वारा वापस किया जाता है।
Comments
Post a Comment