我有以下功能。我想测试是否正确取消了超时。
方案是我有一个单击按钮时打开的菜单,这会调用启动计时器。计时器将在x秒后关闭菜单。但是如果菜单在超时之前关闭,我想取消它。
问题是卡拉马停止,直到超时发生。我想直接点击取消按钮,但视图没有更新,直到超时后,然后触发whenStable()函数。
private setReleaseTimeout() {
this.releaseTimeout = setTimeout(function() {
if (this.showReleaseOptions) {
this.showReleaseOptionsSubject.next(false);
}
}.bind(this), this.configService.get('extendOptionsTimeout'));
}
private cancelReleaseTimeout() {
clearTimeout(this.releaseTimeout);
}
我测试:
it('Buttons should revert after clicking cancel', (done) => {
let buttons = getButtons()
buttons[0].click(); // release button
done();
// get the buttons that are showing
fixture.detectChanges();
fixture.whenStable().then(() => {
fixture.detectChanges();
});
});
有什么想法吗?
干杯 d
P.S。我已经尝试过各种各样的done(),sync,fakeAsync组合但却无法实现它。