2012-02-23 8 views
5

मैं कुछ tSQLt डेटाबेस इकाई परीक्षण लेखन किया गया है (लाल गेट एसक्यूएल टेस्ट के माध्यम से) पर tSQLt साथ परीक्षण, और ध्यान दें कि यदि मैं उपयोग FakeTable सपा, मुझे लगता है कि गणना किए गए कॉलम पॉप्युलेट नहीं होते हैं (वे शून्य के रूप में मूल्यांकन करते हैं)। गणना कॉलम परीक्षण के लिए महत्वपूर्ण है, इसलिए मैं परीक्षण में कॉलम को अनदेखा नहीं कर सकता, और मैं तर्क को डुप्लिकेट नहीं करना चाहता हूं।यूनिट प्रक्रियाओं जो हाल ही में युक्त तालिकाओं (कायम) अभिकलन कॉलम फोन पर अभिकलन कॉलम

मैं का उपयोग कर tSQLt.AssertEqualsTable सपा के परिणामों का मूल्यांकन कर रहा हूँ, और इसलिए मुझे यकीन है कि स्तंभ मान दोनों में ही कर रहे हैं बनाना चाहते हैं।

व्यवहार में, मैं एक (आंशिक) रोलबैक लेनदेन बयान परीक्षण के अंत में (http://sqlity.net/en/585/how-to-rollback-in-procedures/ पर ब्लॉग पोस्ट के अनुसार) स्पष्ट रूप से उपयोग कर या परीक्षण मूल्यों को हटा कर FakeTable का उपयोग नहीं करने से इस के आसपास काम किया है, लेकिन।

मुझे यकीन है कि इस परीक्षण कोडिंग के लिए एक बेहतर तरीका होना चाहिए, और किसी भी सुझाव का स्वागत करेंगे।

उत्तर

4

आप जब परीक्षण प्रक्रिया में तर्क से गणना स्तंभ में तर्क बांट देना चाहिए। प्रक्रिया उस कॉलम में जानकारी लेने जा रही है और उस पर कार्य कर रही है। प्रक्रिया को गणना किए गए कॉलम या वास्तविक कॉलम के कॉलम के बारे में परवाह नहीं करना चाहिए। इसका मतलब है कि, आपके परीक्षण में आप उस कॉलम में रखने के लिए एक मूल्य को हार्डकोड कर सकते हैं। FakeTable किसी भी गणना कॉलम को वास्तविक कॉलम में बदलकर संभव बनाता है।

परीक्षणों के एक और सेट में आप परीक्षण (और चाहिए) परीक्षण कर सकते हैं कि गणना कॉलम की गणना सही ढंग से की जाती है। इसके लिए FakeTable के अतिरिक्त एक उपलब्ध है। यह तालिका की गणना की गई संपत्ति को संरक्षित करता है। आपको EXECUTE tSQLt.FakeTable के @ComputedColumn पैरामीटर को सेट करने की आवश्यकता है। (http://tsqlt.org/user-guide/isolating-dependencies/faketable/)

बीटीडब्ल्यू, आपको किसी परीक्षण में कुछ भी रोलबैक करने की आवश्यकता नहीं है। टीएसक्यूएलटी पहले से ही इसका ख्याल रख रहा है। आपके द्वारा उल्लिखित आलेख में वर्णित तर्क केवल आपकी प्रक्रिया में आवश्यक है, यदि लेनदेन प्रबंधन उस प्रो की आवश्यकता है। http://groups.google.com/group/tsqlt

रिलीज FakeTable दौरान गणना कॉलम या चूक को बचाने के लिये सुविधाएं शामिल हैं:

+0

धन्यवाद सबस्टियन, यह बहुत उपयोगी है। मैं दो परीक्षणों को गठबंधन करने की कोशिश कर रहा था, लेकिन जैसा कि आप इंगित करते हैं कि इन्हें अलग-अलग परीक्षण होना चाहिए। – DaveGreen

3

अब मेलिंग सूची पर उपलब्ध tSQLt करने के लिए एक रिलीज अद्यतन है।

उदाहरण:
EXEC tSQLt.FakeTable 'dbo.tst1', @ComputedColumns = 1;
EXEC tSQLt.FakeTable 'dbo.tst1', @Defaults = 1;

ये जल्द ही आधिकारिक रिलीज के लिए तैयार होंगे।

संबंधित मुद्दे