Angular2, Tests und aufgelöste Daten: wie testen ngOnINit?
Arbeite ich durch die Angular2 testing guide und möchten einen test schreiben für die ngOnInit () - Funktion. Die von der Routing-Teil des Programmier-Handbuch hat dieses format:
let org: Org = null;
ngOnInit(): void {
let that = this;
this.route.data
.subscribe((data: { org: Org }) => {
that.org = data.org;
});
}
Dies ist erfüllt durch einen resolver, wie:
resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<Org> {
let id = this.authService.user.orgId;
return this.orgService
.getOrg(id)
.map(
(org: Org) : Org => {
if(org) {
return org;
} else {
//If the Org isn't available then the edit page isn't appropriate.
this.router.navigate(['/provider/home']);
return null;
}
})
.first();
}
Der code funktioniert OK, aber ich bin mir nicht sicher, wie Sie Sie schreiben einen test für ngOnInit. Die Beispiele, die mir zur Verfügung davon ausgehen, dass eine eingebettete OrgService kann ersetzt werden durch eine MockOrgService. Jedoch, alles, was ich habe, ist ein resolver.
Werde ich irgendwann herausfinden, wie man die test-resolver auf seinen eigenen. Gibt es nützliche tests, die ich tun kann mit einem resolver-basierten ngOnInit?
Dank,
Jerome.
Hi. Wie haben Sie das unit-test-Resolve-Klasse auf seine eigene? Ich bin auf der Suche, das zu tun, ich Frage mich nur was deine Lösung war
InformationsquelleAutor Jerome P Mrozak | 2017-03-07
Du musst angemeldet sein, um einen Kommentar abzugeben.
Was ist, das Verhalten oder die
ngOnInit
Methode? Alle es tut, ist, weisen Sie den Wert desorg
wenn die route-Daten ist behoben. Das ist also alles, was Sie wirklich brauchen, um zu testen.Gerne helfen...
async() (2. parameter() ) sollte verwendet werden, wenn die Prüfstelle macht ein XHR-Aufrufe verwenden, ansonsten fakeAsync: Winkel.io/guide/Test#async-test-mit-async
InformationsquelleAutor Paul Samsotha
War ich versucht zu testen, ngOnInit() für eine Komponente, und leider akzeptiert die Antwort nicht für mich arbeiten. Dies war jedoch:
in der Regel machen wir TestBed.createComponent (...), um die Komponente, die ich vermute, fordert ngOnInit. Würden wir nicht am Ende aufrufen ngOnInit zweimal?
InformationsquelleAutor Ian Yoder