Javascript 如何在angular2中实现间隔/轮询以使用量角器?
我有一个angular2应用程序,我想用量角器测试 在这个应用程序中,我有一个带有图形的页面,该页面正在使用自动生成的数据定期更新 显然,量角器的一个特性是在执行测试代码之前等待脚本和http调用完成。然而,若有一个永不结束的持续轮询脚本,则量角器将永远等待,并在一定时间后超时 在angular1中,这可以通过使用量角器不等待的Javascript 如何在angular2中实现间隔/轮询以使用量角器?,javascript,selenium,angular,protractor,rxjs,Javascript,Selenium,Angular,Protractor,Rxjs,我有一个angular2应用程序,我想用量角器测试 在这个应用程序中,我有一个带有图形的页面,该页面正在使用自动生成的数据定期更新 显然,量角器的一个特性是在执行测试代码之前等待脚本和http调用完成。然而,若有一个永不结束的持续轮询脚本,则量角器将永远等待,并在一定时间后超时 在angular1中,这可以通过使用量角器不等待的$interval实现轮询来解决。不幸的是,在angular2中没有$interval,实现轮询的正确方法似乎是可观察的。interval,因此我的代码是这样的: Obs
$interval
实现轮询来解决。不幸的是,在angular2中没有$interval
,实现轮询的正确方法似乎是可观察的。interval
,因此我的代码是这样的:
Observable.interval(500)
.map(x => this.getRandomData())
.subscribe(data => this.updateGraph(data));
当测试运行此代码的页面时,量角器将超时。它等待页面完成加载,并认为该脚本将在某个时候退出(实际上它将永远运行)
- angular2中是否有量角器可以识别的间隔机制,以便在运行UI测试之前不会等待轮询完成
- 如果不是,我如何告诉量角器在执行更多测试代码之前不要等待这个间隔完成
$interval
解决,请参阅:
这在angular2中不起作用,因为没有
$interval
经过一些调查,我发现了两种可能的解决方案:
browser.ignoreSynchronization=true
指示量角器停止等待http调用和间隔脚本。然而,这可能会使编写e2e测试变得更加困难,因为现在您必须手动等待加载元素和页面,然后再测试它们$http
调用完成this.ngZone.runOutsideAngular(() => {
this.timer = Observable.interval(1000)
}
在区域外运行超时,量角器将不会等待它。@close投票人:您不明白哪部分?我将很乐意进一步解释这个问题。我将您的文章复制/发布到Digrator问题:。你现在有没有更好的解决办法?