Angular 2 Karma测试取消超时

时间:2017-04-03 06:32:18

标签: angular karma-jasmine

我有以下功能。我想测试是否正确取消了超时。

方案是我有一个单击按钮时打开的菜单,这会调用启动计时器。计时器将在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组合但却无法实现它。

0 个答案:

没有答案