使用Protractor-Cucumber-Framework测试Observable.timer

时间:2018-06-13 14:03:11

标签: angular jasmine protractor cucumber observable

我有一个场景,Observable.timer用于在一小时后超时用户会话。

我正在使用量角器 - 黄瓜 - 框架进行e2e测试。

我的问题是:如何在不等待一小时且不更改一小时配置的情况下,为会话超时场景编写e2e测试?

我无法使用Jasmine.clock.tick(),因为我使用量角器 - 黄瓜 - 框架而不是茉莉花(不确定是否有办法同时使用两者)。这是我的量角器配置文件。

exports.config = {
  allScriptsTimeout: 11000,
  directConnect: true,

  specs: ['../features/*.feature'],

  framework: 'custom',
  frameworkPath: require.resolve('protractor-cucumber-framework'),

  cucumberOpts: {
    require: ['../steps/**/*.ts', '../hooks/**/*.ts'],
    strict: true,
    format: ['progress'],
  },

  onPrepare() {
    require('ts-node').register({
      project: 'e2e/tsconfig.e2e.json'
    });
  }
};

我尝试使用TimeShift.js库来使用系统日期,但它不起作用,不确定Observable.timer是否检查系统日期。

以下是我要测试的代码。

  @Effect()
  myEffect$ = this.actions$
    .ofType(LOGIN)
    .switchMap(() => this.runTimer(maxSessionTime));

  private runTimer(timerTime: number): Observable<LogoutAction> {
    return Observable.timer(timerTime).pipe(
      map(() => new LogoutAction())
    );
  }

我正在使用 角度版本:^ 5.2.0, 量角器 - 黄瓜 - 框架版本:^ 5.0.0, ngrx版本:^ 5.2.0。

0 个答案:

没有答案