2012-02-25 1 views
8

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

अब मैं एक रैपर एपीआई कार्यान्वयन बना रहा हूं जो रीस्टफुल वेब सेवाओं का उपभोग करेगा। जेसन परिणाम संरचना मेरे पास वापस भेज दी गई है, उदाहरण के लिए: ट्विटर। मैं बस अपने एपीआई के साथ इंटरफ़ेस करने के लिए क्लाइंट का निर्माण कर रहा हूं। मैं अनिश्चित हूं कि जेसन परिणाम के परीक्षण के बारे में कैसे जाना है। अभी मैं एक स्थिर जेसन संरचना के साथ http अनुरोध के परिणाम का मज़ाक उड़ा रहा हूं। यह सुनिश्चित करता है कि मेरे pojos के लिए जेसन की deserialzing सही है, लेकिन मैं एपीआई परिवर्तनों के बारे में चिंतित हूँ। अगर एपीआई संरचना बदलती है तो क्या होगा? क्या होगा अगर एपीआई वर्तमान में "शीर्षक" और कल "groovy_title" लौटाता है? मेरा यूनिट टेस्ट उसको पकड़ नहीं पाएगा।

हालांकि मेरी समझ से - इकाई परीक्षण त्वरित होना चाहिए। पहले मैं डीबी का मज़ाक उड़ाता हूं और अब मैं http का मज़ाक उड़ा रहा हूं, लेकिन क्या मुझे वास्तव में कंक्रीट http कार्यान्वयन का उपयोग करना चाहिए, इसलिए मुझे तुरंत ब्रेकिंग एपीआई परिवर्तन के बारे में अधिसूचित किया गया है? या क्या इस स्थिति से संपर्क करने का एक बेहतर तरीका है?

उत्तर

4

मैं जो भी कर रहा हूं वह करना जारी रखूंगा और आपके कोड और बाहरी एपीआई के बीच इंटरफ़ेस का मज़ाक उड़ाऊंगा। जैसा कि आप इंगित करते हैं, यह बाहरी API में परिवर्तनों का पता नहीं लगाएगा।

आप एकीकरण परीक्षण लिख सकते हैं जो वास्तव में बाहरी परिवर्तनों के परीक्षण के लिए बाह्य सर्वर पर जाते हैं। मुझे संदेह है कि आपने कोड को अलग कर दिया है जो अपने सर्वर/मॉड्यूल में बातचीत करता है, ताकि आप सचमुच बाहरी ऐप को अपने ऐप में 1 से अधिक एस्ट्रस्ट्रक्शन लेयर से बाधित किए बिना पिंग कर सकें।

नोट, आप अपने ऐप कोड का उपयोग किए बिना इन परीक्षणों का निर्माण कर सकते हैं; यानी बस wget या curl और परिणामों पर कुछ विश्लेषण करें ...

इसके साथ मुद्दे संख्यात्मक हैं; मेरे सिर के ऊपर से:

आपके पास नेटवर्क कनेक्शन
धीमी
जरूरत बाह्य सेवा नीचे अस्थायी रूप से हो सकता है - जो कि विफलता अनेक अर्थ हो सकते।
आदि