12
Ich bin Einheit Testen einer Komponente und das ist zu Ende bringen, was ich habe:für ngOnInit Warten in Jasmine Angular2
describe('Component: nav',() => {
beforeEach(() => addProviders([
provide(UserService, {useClass: MockUserService}),
NavComponent
]));
it('should have a property \'firstName\' with the value \'Crazypug\'',
async(inject([NavComponent], (component) => {
component.ngOnInit();
expect(component.firstName).toEqual('Crazypug')
}))
);
});
Dies ist die ngOnInit Funktion:
ngOnInit() {
this.userService.getFirstNameCall().subscribe(
data => {this.firstName = data.firstname; });
}
Wenn ich den Test ausführen ich bekomme:
undefined voraussichtlich gleich 'Crazypug'
Wie kann ich Jasmine warten lassen, bis die ngOnInit-Funktion beendet ist? Ich habe einige Lösungen auf SO gefunden, aber vor langer Zeit (in angular2 Zeitpunkten). Sie waren sehr kompliziert oder veraltet.
meine ngOnInit eine http.get ruft (über Service-Methode) und bei seiner Rückkehr, setzt die Daten auf den empfangenen Wert ersetzen. Wenn ich den Testcode in einem setTimeout einpacke, ist es erfolgreich, aber die Tick-Methode scheint nicht zu funktionieren (selbst wenn ein Timeout wie der setTimeout-Wert angegeben wurde). Nicht sicher, warum – Nitin