I m scrivere un Uni-test per un metodo di login con una chiamata HTTP.post, come:angular2 - come simulare errore sul test di unità http.post
this.http.post(endpoint, creds, { headers: headers})
.map(res => res.json())
.subscribe(
data => this.onLoginComplete(data.access_token, credentials),
err => this.onHttpLoginFailed(err),
() => this.trace.debug(this.componentName, "Login completed.")
);
Il problema è che io non sono in grado di simulare il ramo di errore; ogni volta viene chiamato il metodo onLoginComplete;
qui è la mia prova:
it("check that Atfer Login, console show an error ", inject(
[TraceService, Http, MockBackend, WsiEndpointService],
(traceService: TraceService, http: Http,
backend: MockBackend, wsiEndpoint: WsiEndpointService) => {
let tokenTest: number = 404 ;
let response: ResponseOptions = null {} // i think i have to modify this
let connection: any;
backend.connections.subscribe((c: any) => connection = c);
let authService: AuthService = new AuthService(http, Service1, Service2);
authenticationservice.login({ "username": "a", "password": "1" });
connection.mockRespond(new Response(response));
expect(ERROR);
}));
Grazie ancora a tutti.
piccola domanda: Come si dovrebbe aggiungere un errore codice di stato http (404, 422, 500, ecc.) con mockError, oltre alla stringa? Nel mio caso, alcune risposte del server non restituiranno altro che quello. Per qualche motivo non ho trovato un esempio che lo mostri ovunque. –
@LucioMollinedo perché non è supportato nell'attuale RC. Vedere https://github.com/angular/angular/pull/8961 per la correzione di bug per renderlo disponibile. Nel frattempo, i test di unità scadenti dovranno subire un altro colpo. – Fiddles
Mi chiedo se questa soluzione possa essere applicata alla versione corrente di angular (2.4)? Ho provato ad adattarlo qui: http://stackoverflow.com/questions/42192911/ senza risultato ... Qualcuno può consigliare per favore? – balteo