Подождите, пока ngOnInit закончится в Жасмине 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')
}))
);
});
Это функция ngOnInit:
ngOnInit() {
this.userService.getFirstNameCall().subscribe(
data => {this.firstName = data.firstname; });
}
Когда я запускаю тест, я получаю:
Ожидаемый undefined равный 'Crazypug'
Как я могу позволить Жасмину ждать завершения функции ngOnInit?
Я нашел некоторые решения на SO, но с давних времен (в angular2 сроки). Они были очень сложными или устаревшими.
Ответы
Ответ 1
Вы должны заменить async
на fakeAsync
import {..., tick, fakeAsync} from '@angular/core/testing';
...
fakeAsync(inject([NavComponent], (component) => {
component.ngOnInit();
tick();
expect(component.firstName).toEqual('Crazypug')
}))