/ / मिराज लौटने के बीच अंतर क्या है। मिराज के माध्यम से रॉसन जेन्स ऑब्जेक्ट को वापस करने के लिए। - json, unit-testing, ember.js, mocking, ember-cli-mirage

मिराज लौटने के बीच क्या अंतर है। रेस्पॉन्स ऑब्जेक्ट बनाम मिराज के माध्यम से कच्चे JSON ऑब्जेक्ट को वापस कर रहा है? - जेसन, यूनिट-टेस्टिंग, एम्बर.जेएस, मॉकिंग, एम्बर-क्ली-मिराज

मैं एक EmberJS परीक्षण सर्वर बनाने की कोशिश कर रहा हूँब्राउज़र। मेरे पास "myApiMethod" के लिए एक एपीआई कॉल है, जिसमें से मैं एक JSON ऑब्जेक्ट प्राप्त करने का प्रयास कर रहा हूं। एक विशिष्ट विधि से प्रतिक्रिया का परीक्षण करने की कोशिश करते समय मुझे पता चला कि मैं या तो एक कच्चे जसन ऑब्जेक्ट को वापस कर सकता हूं, या इसे मिराज में रख सकता हूं। चूँकि मैं असली दुनिया के चिंतनशील होने के लिए मॉक सर्वर की प्रतिक्रिया चाहता था, इसलिए मुझे यकीन नहीं था कि दोनों में से कौन एक बेहतर विचार है।

मैं जानना चाहता था कि कोड के निम्नलिखित दो भाग के बीच कार्यात्मक अंतर है जो मेरे मिराज के config.js में है:

संस्करण 1:

    this.get("/myApiMethod", function(param1, param2){
var jsonObject = myFunctionThatReturnsJson(param1, param2);
return jsonObject;
});

बनाम

संस्करण 2:

    this.get("/myApiMethod",function(param1, param2){
var jsonObject = myFunctionThatReturnsJson(param1, param2);
return Mirage.Response(200, {}, jsonObject);
});

उत्तर:

उत्तर № 1 के लिए 1

मिराज उपयोग करता है Pretender.js नकली XHR प्रतिक्रियाओं के लिए हुड के तहत। प्रिटेंडर स्वयं ही प्रतिक्रिया प्रकार के बारे में अनोपिनियेटेड है, इसलिए JSON के साथ प्रतिक्रिया करते समय आपको इसे मैन्युअल रूप से स्ट्रिंग करने की आवश्यकता होती है। यहाँ डॉक्स से एक उदाहरण है:

this.get("/photos/:id", function(request) {
return [200, {"Content-Type": "application/json"}, JSON.stringify(PHOTOS[request.params.id])]
});

मिराज में मूल निर्णयों में से एक यह मान लेना था कि, अधिकांश समय, लोग JSON के साथ प्रतिक्रिया देना चाहते हैं। तो, मिराज में मार्ग संचालकों आपको सादे जावास्क्रिप्ट ऑब्जेक्ट वापस करने दें:

this.get("/photos/:id", () => {
return [{ id: 1, url: "lorempixel.com/100/100" }];
});

और मिराज प्रतिक्रिया की निगरानी और उचित ContentType हैडर सेट करने का ध्यान रखता है।

The Mirage.Response ऑब्जेक्ट उन लोगों के लिए जोड़ा गया था जो अपनी प्रतिक्रिया अनुकूलित करना चाहते हैं, या तो किसी भिंन सामग्री प्रकार के साथ प्रतिसाद देना, शीर्ष लेख बदलना, या दिए गए क्रिया के लिए डिफ़ॉल्ट से भिंन HTTP प्रतिसाद कोड का उपयोग करना ।

संक्षेप में, यदि आप डिफ़ॉल्ट व्यवहार के अलावा कुछ और की जरूरत है, का उपयोग करें Mirage.Response.