我有一个场景,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。