2015-10-08 11 views
10

स्विफ्ट 2.0 में स्वचालित UI परीक्षण लिखते समय अनुरोधों का नकल करने का कोई तरीका है। जहां तक ​​मुझे पता है कि यूआई परीक्षण अन्य कार्यक्षमता से स्वतंत्र होना चाहिए। प्रतिक्रिया पर निर्भर यूआई के व्यवहार का परीक्षण करने के लिए सर्वर अनुरोधों से प्रतिक्रिया का नकल करने का कोई तरीका है। उदाहरण के लिए, यदि सर्वर डाउन है, तो यूआई परीक्षण अभी भी चलाना चाहिए। लॉगिन के लिए त्वरित उदाहरण, पासवर्ड विफल होने पर नकली, यूआई को अलर्ट दिखाना चाहिए, हालांकि, अगर लॉगिन सफल होता है तो अगला पृष्ठ दिखाना चाहिए।नकली एपीआई अनुरोध Xcode 7 स्विफ्ट स्वचालित यूआई परीक्षण

+0

कुछ और उचित टैग जोड़ा गया। – Liam

+0

मुझे लगता है कि @ जोमासिलोटी सही है। हालांकि, मेरे उत्पादन कोड में, मैं मोक्स समेत थोड़ा परेशान होगा। –

+0

आप शायद SBTUITestTunnel को देखना चाहें जो परीक्षण कोड से डेटा कोड को गतिशील रूप से इंजेक्ट करने के लिए आसान हो सकता है। मेरा जवाब देखें [यहां] (http://stackoverflow.com/questions/36768883/how-do-i-mock-network-requests-in-xcode-ui-tests-while-the-tests-are-running/36909859 # 36909859) –

उत्तर

6

अपने वर्तमान कार्यान्वयन में, यह यूआई परीक्षण के साथ सीधे संभव नहीं है। फ्रेमवर्क के पास सीधे एकमात्र इंटरफ़ेस है जो इसके launch arguments/environment के माध्यम से है।

आप इस संदर्भ में ऐप को एक विशिष्ट कुंजी या मान के लिए देख सकते हैं और कुछ कार्यक्षमता स्विच कर सकते हैं। उदाहरण के लिए, यदि MOCK_REQUESTS कुंजी सेट है, तो अपने नेटवर्किंग परत में वास्तविक HTTPClient के बजाय MockableHTTPClient इंजेक्ट करें। मैंने setting the parameters लिखा और एनएसएचप्स्टर के पास how to read them पर एक लेख है।

आदर्श नहीं होने पर, यह कुछ लेगवर्क के साथ आप जो खोज रहे हैं उसे पूरा करना तकनीकी रूप से संभव है।

यहां एक tutorial on stubbing network data for UI Testing है जो मैंने एक साथ रखा है। यह आपको उन सभी चरणों के माध्यम से चलता है जो आपको इसे प्राप्त करने और चलाने के लिए आवश्यक हैं।

0

यदि आप इसे किसी भी कारण से उत्पादन वातावरण में बनाने वाले मॉक्स के विचार के बारे में चिंतित हैं, तो आप Charles Proxy जैसे तृतीय पक्ष समाधान का उपयोग करने पर विचार कर सकते हैं।

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

आपका लॉगिन चार्ल्स में endpoint yoursite.com/login

हिट आप नक्शे स्थानीय उपकरण आपको मार्ग ले सकते हैं का उपयोग कर कॉल आपके कंप्यूटर यानी mappedlocal.txt

पर सहेजा एक फाइल करने के लिए है कि अंत बिंदु मार

mappedlocal.txt निम्नलिखित पाठ शामिल
HTTP/1.1 404 विफल

जब चार्ल्स चल रहा है और आप इस endpoint आपकी प्रतिक्रिया एक 404 त्रुटि के साथ वापस आ जाएगा मारा।

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

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