Моя проблема в том, что у меня есть эта функция:
loopPingAPI() {
this.pingAPI().then(
success => {
this.setConnected(true);
this.stopPingAPI();
return true;
}, error => {
this.setConnected(false);
return true;
});
this.timer = setTimeout(() => this.loopPingAPI(), 5000);
}
Есть setTimeout (функция запускается каждые 5000 мс), я пытаюсь проверить это так:
it('should not call the stopPingApi function', fakeAsync(() => {
connectivityService.loopPingAPI();
flushMicrotasks();
expect(connectivityService.stopPingAPI).not.toHaveBeenCalled();
}));
У меня есть эта ошибка:
Error: 1 timer(s) still in the queue.
Есть ли способ вызывать функцию loopPingApi () только один раз и после, вызывать функцию stopPingApi () (эта функция убивает setTimeout с помощью clearTimeout (this.timer))?
PS: использование tick () / flush () вместо flushMicroTasks () дает тот же результат.