W aplikacji, z którą pracuję, mamy GET
trasa, która weryfikuje adres e-mail użytkownika. Jeśli adres e-mail jest nieprawidłowy, serwer odpowiada:
- za
200
Kod statusu - nagłówki odpowiedzi z
Content-Type:application/json; charset=utf-8
- a same dane odpowiedzi to tylko ciąg znaków „Ten e-mail jest nieprawidłowy”
Próbuję to zasymulować w ember-cli-mirage
wykonując:
this.get("/ember_api/v1/validations/validate_email", function() {
return [200, { "Content-Type": "application/json" }, "This email is invalid"];
// also tried this:
// return new Mirage.Response(200, { "Content-Type": "application/json" }, JSON.stringify({"message":"This email is invalid"}));
// and tried this:
// return "This email is invalid";
});
Sam test jest kliknięciem przycisku, który uruchamia to żądanie:
GET "/ember_api/v1/validations/validate_email?email=fakey%40fakefakefake.com&skip_uniq=true"
...a błąd, który otrzymuję to:
Pozorowany przechwycony GET/ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true, ale napotkano błąd: program obsługi nie zwrócił nic dla /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true. Pamiętaj, aby zwrócić [status, nagłówki, treść]; w obsłudze trasy.`
Prosi mnie o return [status, headers, body]
, ale robię to w moim programie obsługi i nadal zgłasza błąd.
Czy to rzeczywiście problem z odpowiedzią? Czy muszę edytować mój interfejs API, aby faktycznie zwracał obiekt sformatowany w formacie JSON API, aby móc w ten sposób napisać test?
Czuję, że powinienem być w stanie zwrócić ciąg znaków w moim teście, ponieważ to właśnie robi aplikacja. Każda pomoc jest doceniana.
Odpowiedzi:
0 dla odpowiedzi № 1The this.get
używasz wersji Mirage. Możesz także użyć this.pretender.get
który powinien działać z obecną próbką kodu ...