Javascript 如何在ngoninit中对setInterval进行单元测试?
我有一个refresh()函数,它执行更新的数据场景,这里我尝试实现的是每1分钟自动刷新一次,无需用户交互,因此我在ngoninit中使用setinterval,以便每60秒执行一次,并在ngDestroy中清除这些间隔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) {
这是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中调用该函数,但仍然面临相同的错误