Javascript 如何在ngoninit中对setInterval进行单元测试?

Javascript 如何在ngoninit中对setInterval进行单元测试?,javascript,angular,unit-testing,testing,jasmine,Javascript,Angular,Unit Testing,Testing,Jasmine,我有一个refresh()函数,它执行更新的数据场景,这里我尝试实现的是每1分钟自动刷新一次,无需用户交互,因此我在ngoninit中使用setinterval,以便每60秒执行一次,并在ngDestroy中清除这些间隔 这是component.ts ngOnInit(): any { this.refresh(); this.interval = setInterval(() => { if (this.hideLog) {

我有一个refresh()函数,它执行更新的数据场景,这里我尝试实现的是每1分钟自动刷新一次,无需用户交互,因此我在ngoninit中使用setinterval,以便每60秒执行一次,并在ngDestroy中清除这些间隔
这是component.ts

ngOnInit(): any {
 this.refresh();
 this.interval = setInterval(() => {
                      if (this.hideLog) {
                        this.updateWorkflow();
                      } else {
                        this.refresh();
                      }
                  },                            60000); 

}



ngOnDestroy(): void {
  this.clearInt();
}
clearInt(): void {
  if (this.interval) {
    clearInterval(this.interval);
  }
}
如何在spec.ts文件中添加此测试,以便ngoninttest应该通过

运行我的测试用例时出错:

错误:队列中仍有1个周期计时器


有人能帮我解决这个问题吗?

在测试用例的expect之后,我在下面的代码中遇到了以下错误。请看一下
fakeAsync
flush
勾选
。此外,我建议您在
ngZone
之外运行间隔,并在必要时通过添加fakeasync、flush和tick检查返回,仍然面临相同的问题。移动this.interval=setInterval(()=>{if(this.hideLog){this.updateWorkflow();}else{this.refresh();}},60000);创建新函数并在ngoninit中调用该函数,但仍然面临相同的错误