12
jestem jednostka badania komponent i to, co mam:Odczekaj ngOnInit zakończyć w 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')
}))
);
});
Jest to funkcja ngOnInit:
ngOnInit() {
this.userService.getFirstNameCall().subscribe(
data => {this.firstName = data.firstname; });
}
Kiedy uruchamiam test I otrzymujemy:
Oczekiwany undefined równy 'Crazypug'
Jak mogę pozwolić Jasmine czekać na zakończenie funkcji ngOnInit? Znalazłem kilka rozwiązań na SO, ale od dawna (w angular2). Były bardzo skomplikowane lub przestarzałe.
mój ngOnInit wywołuje http.get (poprzez metody usługi) i po jego powrocie, zestawy danych do otrzymanej wartości. Jeśli owiję kod testowy w setTimeout, to się uda, ale metoda "tick" nie działa (nawet jeśli podana jest wartość timeout taka sama jak wartość setTimeout.). Nie wiem, dlaczego – Nitin