Мой компонент выглядит следующим образом, где в Init я получаю свои начальные данные от службы, а затем каждые 15 секунд вызываю одну и ту же функцию для обновления этих данных:
networkGraph: NetworkGraphComponent;
hideSpinner: boolean = false;
ngAfterViewInit() {
this.getTopology();
}
getTopology() {
clearTimeout(this.timeoutHandler);
this.topologyService.getTopology().subscribe((topology: any) => {
...do stuff...
if (topology) {
setTimeout(()=>{ // hack to fix ngIf
this.hideSpinner = true;
});
this.networkGraph.topology = topology;
this.timeoutHandle = setTimeout(function(){
this.getTopology();
}, 15000);
}
});
Как бы я написал модульный тест, чтобы проверить это? Он продолжает терпеть неудачу, говоря, что у меня есть таймеры в очереди. Я прочитал это https://medium.com/@golbie/angular-testing-async-stuff-in-the-fakedasync-zone-vs-providing-custom-schedulers-27a7f83c7774 и попытался выяснить, что там, но, полагаю, я сделал это неправильно, потому что у меня все еще были те же результаты.
it('should create the component', fakeAsync(()=>{
tick(20000)
fixture.detectChanges();
fixture.whenStable().then(()=>{
expect(component).toBeTruthy();
})
}));