2011-01-08 19 views
15

मैं एक ऐसे सिस्टम पर काम कर रहा हूं जो एज़ूर टेबल स्टोरेज का उपयोग करता है। अन्य प्रणालियों में (उदा।, एसक्यूएल, फाइल आधारित, आदि), मैं एक नकली लिख सकता हूं जो मुझे अपने डेटा दृढ़ता तर्क का परीक्षण करने की अनुमति देता है। हालांकि, मैं Azure टेबल सेवा के लिए नकली बनाने का एक आसान तरीका नहीं देख सकता।यूनिट परीक्षण के लिए .NET में नकली Azure तालिका संग्रहण कैसे करें?

मैं एक नई आईआईएस परियोजना बना सकता हूं जो एक ही तरीके से व्यवहार करता है, लेकिन यूनिट परीक्षण लिखने का यह एक अच्छा तरीका नहीं है, यह एकीकरण परीक्षण से अधिक है।

एज़ूर टेबल स्टोरेज क्लाइंट का उपयोग करने वाले डेटा एक्सेस कोड का परीक्षण करने के तरीके पर कोई विचार?

धन्यवाद, एरिक

उत्तर

0

यह कुछ मैं वर्तमान में अपने आप पर विचार कर रहा हूँ, लेकिन मैं अभी तक इसे करने की कोशिश नहीं की है।

DataServiceContext से tableServiceContext inherets, तो मुझे लगता है कि यदि आप DataServiceContext को DataServiceContext के रूप में इंजेक्ट कर सकते हैं, तो आप डेटा सेवाओं का उपयोग करके टेबल स्टोर का मॉडल कर सकते हैं।

यदि आप अपना एंटिटी मॉडल बनाने के लिए एंटीटी फ्रेमवर्क "कोड फर्स्ट" का उपयोग करते हैं, तो आप केवल एक कदम आगे ले सकते हैं - आप केवल उन तालिका इकाइयों का उपयोग कर सकते हैं जिन्हें आपने पहले से ही अपनी डेटा सेवा के लिए बैकिंग इकाइयों के रूप में बनाया है और सबकुछ सुचारू रूप से काम करना चाहिए ।

यह सिद्धांत कम से कम है। मैंने कभी कोशिश नहीं की है।

http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.tableservicecontext_members.aspx

+0

प्रतिक्रिया के लिए धन्यवाद। मुझे यकीन है कि मैं पूरी तरह से पालन करता हूं - क्या आप एज़ूर टेबल परीक्षणों के लक्ष्य के रूप में डब्ल्यूसीएफ डाटा सर्विसेज (स्थानीय रूप से) का उपयोग करने का सुझाव दे रहे हैं? यदि ऐसा है, तो मुझे विचार पसंद है, लेकिन मैं दोनों के बीच विषम मतभेदों के बारे में चिंतित हूं। अगर आपने इसे आजमाया है तो मुझे बताएं, और मैं वही करूँगा। धन्यवाद! –

0

मैं ICloudTableStorage का इन-स्मृति कार्यान्वयन, जो आप जैसे ReliableCloudTableRepository में पारित कर सकते हैं का उपयोग करें।

आप यहाँ कोड पा सकते हैं: https://gist.github.com/4078750

+0

यह उस फ़ाइल के साथ लिंक करता है जिसमें कोई कोड नहीं है। मुझे नहीं पता कि इसमें क्या शामिल था, लेकिन इस बिंदु पर यह कुछ भी नहीं है। –

+0

@DanCsharpster आह हाँ। जब मूल रूप से प्रश्न पोस्ट किया गया था, तो मुझे लगता है कि हर कोई क्लाउडएफएक्स के एज़ूर एसडीके का उपयोग कर रहा था। अंत में मैंने अपनी जिस्ट को उस वर्ग के पक्ष में बहिष्कृत कर दिया जो कि अपने पुस्तकालयों में उपलब्ध हो गया था, जो कि अब गस्ट कहता है: // // माइक्रोसॉफ्ट का उपयोग करें। एक्सपीरियंस.क्लाउडएफएक्स.फ्रेमवर्क। स्टोरेज.इनमेमरी क्लाउडटेबल स्टोरेज '। आप संशोधन के तहत पुराना कोड देख सकते हैं (https://gist.github.com/timiles/4078750/revisions), लेकिन चूंकि यह क्लाउडएफएक्स पर निर्भर है, इसलिए अब अपनी कक्षा का उपयोग न करने का कोई कारण नहीं है। मैं इसे बहाल करने में देख सकता था, लेकिन ध्यान दें कि 2012 से अज़ूर बहुत बदल गया है। –

+0

धन्यवाद @ टिम आइल्स! मैं इसे देख लूंगा। एफवाईआई, मैं एज़ूर स्टोरेज एमुलेटर में भी जांच कर रहा हूं। ऐसा लगता है कि इसमें एकीकरण परीक्षणों की कुछ संभावनाएं हैं। https://azure.microsoft.com/en-us/documentation/articles/storage-use-emulator/ –

0

मैं जानता हूँ कि कई समाधान यहां पोस्ट देखते हैं, लेकिन यहाँ एक मैं के साथ आया है:

http://azurator.blogspot.com/2013/07/unit-testing-azure-table-storage-queries.html

यह जब के लिए केवल एक समाधान है आप CloudTableQuery<T> का उपयोग कर ऑब्जेक्ट्स से पूछताछ कर रहे हैं, लेकिन इससे मुझे बहुत मदद मिली। यदि आप अधिक पूर्ण कार्यान्वयन प्राप्त करने का प्रयास कर रहे हैं तो आप DataServiceContext.SaveChanges() के लिए एक शिम भी बना सकते हैं जो आपको अपडेट करने वाला हिस्सा मिल सकता है।

0

मैं एकीकरण परीक्षण के लिए इस पर विचार कर रहा था, लेकिन मुझे लगता है कि यह यूनिट परीक्षण के लिए भी काम कर सकता है। Azure Storage Emulator से मिलें। यह Azure Blob, Queue और Table Services का परीक्षण करने के लिए एक बहुत ही शानदार टूल की तरह लगता है। मैं इसके साथ खेल रहा हूं और अगर मुझे ऐसा करना याद है तो मेरे निष्कर्ष पोस्ट करने का प्रयास करें।