我的问题是我具有此功能:
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()函数(此函数通过clearTimeout(this.timer)杀死setTimeout)?
P.S:使用tick()/ flush()代替flushMicroTasks()具有相同的结果。