2012-11-02 15 views
15

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

आम तौर पर, परीक्षण के लिए निम्न घटक हैं: मार्ग HTML तत्वों को

  • HTML प्रतिपादन और कोणीय नियंत्रकों के बंधन

    1. वेब एपीआई
    2. कोणीय नियंत्रकों
    3. कोणीय

    कम से कम प्रयास के साथ यह सब कैसे परीक्षण करता है और यदि संभव हो तो ओवरलैप करें?

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

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

    इसके अलावा, मुझे लगता है कि यदि E2E परीक्षण सभी संभावित परिदृश्यों का ख्याल रखता है, तो यूनिट परीक्षण नियंत्रक अनावश्यक हैं क्योंकि उनके मान मॉडल के लिए बाध्य हैं (और इस प्रकार उपरोक्त 2, 3 और 4 का परीक्षण करेंगे)। यूनिट परीक्षण केवल जटिल नियंत्रकों में या सेवाओं और निर्देशों का परीक्षण करने में सहायक होगा।

    हालांकि, expect*() का उपयोग करते हुए, आप परीक्षण परीक्षणों पर $httpBackend के साथ सामग्री का नकल करने के बारे में कोई जानकारी नहीं पा रहे थे। कोणीय दस्तावेज़ when*() के साथ-साथ कभी-कभी passthrough() का उपयोग करने का सुझाव देते हैं।

    लेकिन, यह सभी परिदृश्यों के लिए परीक्षण डेटा बनाने की उपरोक्त समस्या उत्पन्न करता है और परीक्षणों को प्रभावित नहीं होने के लिए प्रत्येक परीक्षण से पहले आपको इन-मेमोरी डीबी को रीसेट करने की आवश्यकता होगी। साथ ही, आप $httpBackEnd.expect*() का उपयोग करने की सुरक्षा खो रहे हैं जो जांचता है कि सर्वर पर कोई गुम या अनावश्यक कॉल नहीं है - यह मुझे सुझाव देगा कि इसे जांचने के लिए इकाई परीक्षण नियंत्रकों की भी आवश्यकता होगी।

    क्या कोई एंगुलरजेएस ऐप्स के लिए एक विस्तृत परीक्षण रणनीति प्रदान कर सकता है जो उपरोक्त 4 घटकों के परीक्षण के साथ-साथ ऊपर लिखी चिंताओं को भी संबोधित करता है?

  • +0

    मैं अभी भी मेरे सिर में इस बारे में अलग-अलग विचारों प्रियतम वस्तु कर रहा हूँ। मुझे लगता है कि करने के लिए सबसे महत्वपूर्ण बात एक असली डेटाबेस पर, पूर्ण आवेदन का परीक्षण है। यह भी सबसे कठिन है। इसके लिए कोणीय परिदृश्य का उपयोग करना थोड़ा गलत लगता है, क्योंकि तब आप अपने सभी परीक्षणों के लिए स्वयं को कोणीय में बंद कर देते हैं। सेलेनियम WebDriver की तरह कुछ है कि के लिए बेहतर लगता है, लेकिन यह भी एक परेशानी स्थापित करने के लिए की अधिक है। अगर मुझे एक निश्चित रणनीति मिलती है तो मैं इसे वापस ले जाऊंगा। – iwein

    +0

    बिल्कुल। वास्तविक डेटाबेस के खिलाफ बहुत सारे मूल्य परीक्षण हैं। कोणीय पारिस्थितिकी तंत्र के बाहर कुछ चुनने के लिए +1 हालांकि सेलेनियम शुरू करने के लिए कोई प्राकृतिक फिट नहीं है। आप पाइथन या सी # या जावा जैसे किसी भी सेलेनियम कार्यान्वयन को चुनने के लिए स्वतंत्र हैं। – fatuhoku

    उत्तर

    6
    1. सुनिश्चित नहीं हैं कि - के बाद से अपने कोणीय एप्लिकेशन सैद्धांतिक रूप से अपने बैकएंड से decoupled है, वहाँ कोई विशेष कारण है कि कोणीय परीक्षण और बैकएंड परीक्षण मिश्रित किए जाने की जरूरत है। मैं अलग-अलग परीक्षण करता हूं, प्रत्येक टेस्ट सूट के साथ यह मानते हुए कि दूसरा घटक ठीक काम करता है। (इसलिए जब कोणीय परीक्षण करते हैं, तो आप मानते हैं कि सर्वर अपेक्षित काम करेगा।)

    2. यूनिट परीक्षण - वे ई 2 ई परीक्षणों की तुलना में अधिक गहराई प्रदान करते हैं। कोड का सामना करने वाली विशिष्ट स्थितियों को सत्यापित करना आसान है। सभी निर्भरताओं को जरूरी रूप से जरूरी करना और यूनिट परीक्षणों में रुचि रखने वाले घटक का परीक्षण करना भी आसान है। यूनिट परीक्षण यूआई कैसे काम करता है, या सही डेटा सही तरीके से बाध्य है, लेकिन व्यापार तर्क के बजाए खुद को चिंता नहीं करता है ऐप का सही है।

    3. (और 4) E2E परीक्षण - कम विवरण का स्तर, सुनिश्चित करें कि यूआई एक अंत उपयोगकर्ता के नजरिए से अपेक्षा के अनुरूप लग रहा है बनाने पर ध्यान केंद्रित कर। आप सही है कि यह एक जीवित डेटाबेस के खिलाफ परीक्षण करने के लिए (हालांकि कुछ लोगों को एक पूर्ण एंड-टू-एंड एकीकरण परीक्षण द्वारा प्रदान की सुरक्षा का आनंद) गंदा है कर रहे हैं, और इसलिए आप $httpBackend का उपयोग करना चाहिए सर्वर बाहर उपहास करने के लिए।

    0

    यह https://www.sitepoint.com/unit-and-e2e-testing-in-angularjs/ देखें। अपने सेवा/कारखाना http सेवा एक दूरस्थ एपीआई कॉल करने के लिए इकाई के लिए इसे से नकली डेटा लौट सकते हैं का उपयोग करता है testing.If आप एक नया कोणीय परियोजना शुरू कर रहे हैं E2E परीक्षण के लिए चांदा का उपयोग कर पर विचार करें।

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