2010-03-24 17 views
6

मेरा वर्तमान प्रोजेक्ट JSON का उपयोग डेटा इंटरचेंज प्रारूप के रूप में करता है। फ्रंट-एंड और बैक-एंड टीम दोनों एक सेवा को एकीकृत करने से पहले एक JSON संरचना पर सहमत हैं। कई बार जेएसओएन संरचना में बैक-एंड टीम द्वारा अधिसूचित परिवर्तनों के कारण; यह फ्रंट एंड कोड तोड़ता है।जेएसओएन प्रतिक्रिया सर्वर/यूनिट परीक्षण कैसे करें?

क्या कोई बाहरी लाइब्रेरी है जिसे हम सर्वर JSON प्रतिक्रिया के साथ एक नकली JSON (स्थिरता) की तुलना करने के लिए उपयोग कर सकते हैं। मूल रूप से इसे पूरे JSON ऑब्जेक्ट पर जोर देना चाहिए और सर्वर JSON प्रारूप में कोई उल्लंघन होने पर त्रुटि को फेंक देना चाहिए।

अतिरिक्त जानकारी: ऐप JQuery उपभोक्ता रीस्ट जेएसओएन सेवाओं पर बनाया गया है।

उत्तर

6

मैं आपके JSON ऑब्जेक्ट्स के लिए स्कीमा की अनुशंसा करता हूं।

मैं Kwalify का उपयोग करता हूं लेकिन यदि आप उस वाक्यविन्यास को बेहतर पसंद करते हैं तो आप Rx का भी उपयोग कर सकते हैं।

+0

जेएसओएन के लिए स्कीमा घोषित करना दिलचस्प है।फिक्स्चर दृष्टिकोण के बारे में मेरा विचार यहां है; इसका उपयोग बैक-एंड सेवाओं की अखंडता के परीक्षण के साथ-साथ ऑफलाइन या प्री-इंटीग्रेशन यूआई विकास के लिए भी किया जा सकता है। – shazmoh

+2

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

3

ऐसा लगता है कि आप दूसरे छोर से किसी समस्या को हल करने का प्रयास कर रहे हैं। बैक-एंड डेवलपर के काम के परीक्षण के साथ आपको फ्रंट एंड डेवलपर के रूप में क्यों परेशान होना चाहिए?

सर्वर पर जेनरेट किया गया एक JSON मानक दृष्टिकोण का उपयोग कर सर्वर पर परीक्षण करना बेहतर है, यानी xUnit में कार्यात्मक परीक्षण। आप FITnesse जैसे स्वीकृति परीक्षण ढांचे को भी देख सकते हैं यदि आप सभी में परीक्षण और दस्तावेज़ीकरण विकी रखना चाहते हैं।

यदि सर्वर पर परीक्षण शुरू करने के बाद भी आपको अमान्य JSON मिल जाएगा, यह मानव संचार में एक समस्या है, परीक्षण में नहीं।

+1

मैं असहमत हूं। भले ही बैकएंड _should_ यूनिट पर अपने स्वयं के कोड का परीक्षण करने के लिए बेहतर काम करता है, फिर भी कई बार यह सुनिश्चित करने में मदद मिलेगी कि आपको यह सुनिश्चित करने में मदद मिलेगी कि आप किस प्रकार के डेटा की अपेक्षा कर रहे हैं। इनकमिंग जेएसओएन को जल्दी से दोबारा जांचने में सक्षम होने से आप इस मुद्दे को सही ढंग से सामने या बैकएंड के रूप में पहचानकर अपने डिबगिंग समय को काफी कम कर सकते हैं – Hortitude

5

मैं हाल ही में अपने बहुत सारे जेएस कोड के लिए QUnit: http://docs.jquery.com/QUnit का उपयोग कर रहा हूं।

asyncTest http://docs.jquery.com/QUnit/asyncTest JSON संरचना का परीक्षण करने के लिए बहुत प्रभावी ढंग से उपयोग किया जा सकता है।

उदाहरण:


asyncTest("Test JSON API 1", 1, function() { 
    $.getJSON("http://test.com/json", function(data) { 
     equals(data.expected, "what you expected", "Found it"); 
    }); 
}); 
0

के बाद से वहाँ कोई जवाब नहीं मैं में मेरे दो सेंट डाल देता हूँ

यदि समस्या यह है कि आप पीठ के अंत से स्थानांतरण आवश्यकताओं के साथ तो काम कर रहे हैं कि तुम क्या। करने की जरूरत है उन परिवर्तनों से खुद को अलग करें। फ्रंट एंड एंड बैक एंड के बीच एक अमूर्तता डालें।

शायद आप जेएसओएन डेटा प्रारूप इंटरचेंज को इस अमूर्तता को कॉल कर सकते हैं।

तो जब जीयूआई यूनिट-परीक्षण (उम्मीद है कि आप अपने वेब जीयूआई को टीडीडी कर रहे हैं) तो आपके पास JSON DIF के लिए एक नकली होगा। इसलिए जब फ्रंट-एंड * के साथ बैक-एंड को एकीकृत करने का समय, तो कोई सॉफ़्टवेयर परिवर्तन अबास्ट्रक्शन लेयर कार्यान्वयन में किया जाएगा। और निश्चित रूप से आपके पास JSON संरचना पर सहमत होने के आधार पर पहले से ही परीक्षण हैं।

ओबीटीडब्ल्यू, मुझे लगता है कि सर्वर-साइड टीम को सर्वर के खिलाफ प्रोटोकॉल निर्दिष्ट करने की ज़िम्मेदारी होनी चाहिए।

* यह मेरे बट के मजाक की याद दिलाता है और आपका चेहरा जुड़वां हो सकता है।

0

https://github.com/skyscreamer/JSONassert झूठी सकारात्मकताओं को समाप्त करने में सहायक हो सकता है, ताकि सर्वर द्वारा लौटाए गए फ़ील्ड का क्रम बदल जाए, लेकिन समग्र प्रतिक्रिया समान है, यह विफलता को ट्रिगर नहीं करती है।

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