2016-01-15 12 views
14

मैं सेटअप करने के लिए हमारी टीम के परियोजना पर एक ठोस E2E परीक्षण नींव चाहते हैं, लेकिन मुझे लगता है कि सवाल का एक सरल उपाय नहीं मिल सकता है:e2e परीक्षणों का मज़ाक उड़ाते समय एपीआई संशोधनों का पता कैसे लगाया जाए?

जब आप अपने कॉल के सभी मजाक कर रहे हैं, सबसे अच्छा तरीका क्या है पता लगाएं कि आपके सर्वर द्वारा लौटाई गई वस्तुओं का वास्तविक मॉडल संशोधित किया गया है या नहीं?

आपका परीक्षण अभी भी पारित क्योंकि वे मॉडल के एक पुराने संस्करण का परीक्षण कर रहे हैं, लेकिन एप्लिकेशन संभावित रूप से टूट गया है जाएगा।

उदाहरण के लिए, एक नकली मान लिया गया है कि अगर /api/users/1 रिटर्न null उपयोगकर्ता मौजूद नहीं है अगर, जब यह वास्तव में एक खाली वस्तु देता है, तो हालांकि परीक्षण पास कर सकते हैं, व्यवहार परीक्षण किया जा रहा गलत मान्यताओं पर निर्भर करता है और इसलिए विफल हो सकता है अप्रत्याशित तरीकों से।

या शायद बैकएंड किसी भी तरह नवीनतम नवीनतम मॉडल के साथ स्थिर जेसन फाइलें प्रदान कर रहा है और फ्रंटेंड इस पर निर्भर करता है?

यह निश्चित रूप से मानता है कि बैकएंड पर काम करने वाले लोग और फ्रंटेंड पर काम करने वाले लोग अलग-अलग टीम हैं।

मैं यहां कोणीय 1.x और प्रोटैक्टर का उपयोग कर रहा हूं लेकिन यह वास्तव में तकनीक पर निर्भर नहीं है। window.e2eHttp[request.url] = null;, प्रतिक्रिया + responseError: window.e2eHttp[request.url] = result;

आप इंजेक्षन करने या अपने समाधान, e2eService.isEnabled() में एक ध्वज का उपयोग करने के चांदा का कोणीय मॉड्यूल प्रणाली का उपयोग कर सकते हैं, टॉगल करने के लिए

उत्तर

6

मुझे लगता है कि तुम क्या कर रहे (परीक्षण के दौरान दृश्यपटल अलगाव) सही है, यह इस तरह से रहते हैं।

क्या आप अपने mocks सत्यापित करने के लिए क्या कर सकते हैं उन में से एक है:

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

विकास के दौरान आप समय-समय पर या प्रत्येक कोड परिवर्तन पर परीक्षण के दोनों सेट (ई 2 ई और बैकएंड यूनिट परीक्षण) चला सकते हैं।

2) यदि दृश्यपटल कम या ज्यादा बैकएंड से स्वतंत्र है, तो आप कुछ एकीकरण परीक्षण है, जो आपको E2E परीक्षण के अलावा चलेगा की आवश्यकता है। इन्हें बैकएंड में वास्तविक HTTP अनुरोध करना चाहिए और आपके मोजे के साथ लौटाई गई डेटा संरचना की तुलना करना चाहिए। इस तरह आप स्थिति का पता लगा सकते हैं जब मोजे पुराने हो जाते हैं।

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

+0

समाधान 2 दिलचस्प लग रहा है। मैं निश्चित रूप से बैकएंड जितना संभव हो सके समाधान के लिए एक समाधान की तलाश में हूं। – deonclem

2

आप एक http interceptor कि अनुरोध पर डेटा संग्रहीत करता है रजिस्टर करने की आवश्यकता इंटरसेप्टर पर और बंद।

फिर आपके ई 2 टेस्ट में आपको browser.wait + browser.executeScript को window.e2eHttp[request.url] तक डेटा लागू करने की आवश्यकता है। यह हमेशा कोणीय http प्रतिक्रिया ऑब्जेक्ट होगा (http स्थिति हेडर, डेटा, ect)

3

@ लैब्लाक मेनिस के समान समाधान एक JSON फ़ाइल में प्रत्येक कॉल की प्रतिक्रिया को सहेज लेगा।अपने e2e परीक्षणों के लिए इंटरसेप्टर के अंदर अपनी प्रतिक्रिया सहेजें और फिर e2e परीक्षणों के लिए सहेजी गई JSON फ़ाइल का उपयोग करें। जब भी आपकी एपीआई सेवा चलती है तो ये कॉल जेएसओएन स्वचालित रूप से अपडेट हो जाएंगे। मॉडल को स्टोर करने के लिए पहली बार अपनी सभी सेवाओं को चलाने की आवश्यकता होगी और फिर इसे अपने ई 2e परीक्षणों के लिए उपयोग करें। जैसे ही आप अपना अपडेटेड एपीआई चलाते हैं, मॉडल अपडेट हो जाएगा। आप उत्पादन निर्माण के लिए प्रतिक्रिया बचाने को रोकने के लिए एक टॉगल बना सकते हैं।

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

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