/ / Aký je rozdiel medzi vrátením objektu Mirage.Response vs vrátením surového objektu JSON cez Mirage? - json, unit-testing, ember.js, falošné, ember-cli-mirage

Aký je rozdiel medzi vrátením objektu Mirage.Response a vrátením surového objektu JSON cez Mirage? - json, testovanie jednotiek, ember.js, výsmech, ember-cli-mirage

Snažím sa postaviť testovací server EmberJS v systéme Windows XPprehliadač. Mám volanie rozhrania API na adresu „myApiMethod“, z ktorého sa snažím získať objekt JSON. Pri skúšaní odpovede z konkrétnej metódy som zistil, že môžem vrátiť buď surový objekt json, alebo ho zabaliť do objektu Mirage.Response. Keďže som chcel, aby reakcia simulovaného servera odrážala skutočný svet, nebol som si istý, ktorý z nich bol lepší nápad.

Čo som chcel vedieť, boli funkčné rozdiely medzi nasledujúcimi dvoma kúskami kódu, ktoré mám v mojom konfiguračnom súbore Mirage.

Verzia 1:

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

vs.

Verzia 2:

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

odpovede:

1 pre odpoveď č. 1

Mirage používa Pretender.js pod kapotou na falošné reakcie XHR. Samotný pretender nie je o type odpovede jednoznačný, takže pri odpovedi s JSON ho musíte manuálne spresniť. Tu je príklad z dokumentov:

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

Jedným z pôvodných rozhodnutí v Mirage bolo predpokladať, že ľudia väčšinou chcú reagovať s JSON. Ovládače trás v Mirage vám teda umožňujú vrátiť jednoduché objekty jazyka JavaScript:

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

a Mirage sa postará o sprísnenie odpovede a nastavenie príslušnej hlavičky ContentType.

Na Mirage.Response objekt bol pridaný pre ľudí, ktorí sa chcú prispôsobiťich odpoveď, buď na odpoveď s iným typom obsahu, zmenu hlavičiek alebo použitie iného kódu odpovede HTTP, ako je predvolené pre dané sloveso.

Stručne povedané, ak potrebujete niečo iné ako predvolené správanie, použite Mirage.Response.