रेट्रोफिट 1.x में मैंने एपीआई सेवा कक्षाएं बनाने के लिए निम्न पैटर्न का उपयोग किया जो कुछ निर्माण प्रकारों के लिए खराब नेटवर्क कनेक्शन अनुकरण करता था।रेट्रोफिट 2 के साथ खराब नेटवर्क सिम्युलेट करें (वास्तविक, यानी गैर-मजाक, एपीआई)
// Retrofit 1
private <T> T create(Class<T> apiServiceClass) {
T apiService = restAdapter.create(apiServiceClass);
if (!BuildConfig.IS_PRODUCTION_BUILD) {
endpoints = mockRestAdapter.create(apiServiceClass, apiService);
}
return apiService;
}
इस बारे में अच्छी बात यह है कि मेरे वास्तविक एपीआई एंडपॉइंट्स का उपयोग किया जाता है। इस तरह से मैं देख सकता हूं कि ऐप एक फ्लैकी कनेक्शन पर कैसे व्यवहार करता है और मुझे मजाक/कृत्रिम प्रतिक्रिया प्रदान करने की आवश्यकता नहीं है।
अब, रेट्रोफिट 2 में MockRestAdapter
या MockRetrofit
के लिए एपीआई पूरी तरह बदल गया है। MockRetrofit#create
अब BehaviorDelegate
देता है। मैं
// Retrofit 2
private <T> T create(Class<T> apiServiceClass) {
T apiService = retrofit.create(apiServiceClass);
if (!BuildConfig.IS_PRODUCTION_BUILD) {
endpoints = mockRetrofit.create(apiServiceClass).returning(???);
}
return apiService;
}
मैं returning(???)
पर अटक जाते हैं के रूप में एक ही पैटर्न का उपयोग करने का प्रयास करें। returning
Call<?>
कार्यान्वयन की अपेक्षा करता है। लेकिन मुझे लगता है कि यह मेरे रेट्रोफिट 1 उदाहरण (शायद इसका इरादा नहीं है) जैसे काम करने के लिए इसे कार्यान्वित करने के तरीके को समझने के लिए प्रतीत नहीं होता है।
तो मेरा सवाल यह है कि: सामान्य रूप से, मैं रेट्रोफिट 2 के साथ एक वास्तविक एपीआई पर खराब नेटवर्क को अनुकरण करने के लिए उपर्युक्त रेट्रोफिट 1 पैटर्न कैसे प्राप्त कर सकता हूं?
बिल्कुल जो मैं खोजता हूं। धन्यवाद! – user1795683
उत्तर देने के लिए सबसे पहले धन्यवाद। मैं भी 'मॉकरेट्रोफिट' के साथ समस्या को हल करने की उम्मीद कर रहा था। मैं आपके जैसा कुछ कर रहा था। लेकिन यदि आप इसके बजाय 'ओकेएचटीपी' इंटरसेप्टर 'का उपयोग करके अपना खुद का रोलिंग कर रहे हैं, तो आप अपनी खुद की' नेटवर्कबिहियर 'कक्षा भी लिख सकते हैं जो आपको चाहिए। अन्यथा, आप एक वर्ग पर दो विधियों का उपयोग करने के लिए पूरे 'रेट्रोफिट-मॉक' lib पर भरोसा कर रहे हैं। – tir38
build.gradle में निर्भरता 'compile' com.squareup.retrofit2 है: retrofit-mock: 2.3.0'' (वर्तमान में संस्करण 2.3.0) –