Ich bin einen Uni-Test für eine Login-Methode mit einem HTTP.post Aufruf zu schreiben, wie:angular2 - wie Fehler auf http.post Unit-Test zu simulieren
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.")
);
Das Problem ist, dass ich nicht bin fähig, den Fehlerzweig zu simulieren; Jedes Mal wird die onLoginComplete-Methode aufgerufen.
hier ist mein Test:
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);
}));
Nochmals vielen Dank an alle.
Kleine Frage verwenden können: Wie würden Sie einen Fehler hinzufügen http Statuscode (404, 422, 500, etc) mit MockError, neben der Zeichenfolge? In meinem Fall werden einige Serverantworten nichts zurückgeben. Aus irgendeinem Grund habe ich kein Beispiel gefunden, das das irgendwo zeigt. –
@LucioMollinedo, weil es in der aktuellen RC nicht unterstützt wird. Siehe https://github.com/angular/angular/pull/8961 für den Bugfix, um dies zur Verfügung zu stellen. In der Zwischenzeit müssen schlechte Unit-Tests einen weiteren Schlag bekommen. – Fiddles
Ich frage mich, ob diese Lösung auf die aktuelle Version von angular (2.4) angewendet werden kann? Ich habe versucht, es hier anzupassen: http://stackoverflow.com/questions/42192911/ ohne Erfolg ... Kann jemand bitte beraten? – balteo