我有一個angular2應用程序,我想用量角器測試。如何實現angular2中的間隔/輪詢以使用量角器?
在這個應用程序中,我有一個頁面,其中定期更新自動生成的數據。
顯然量角器的一個特性是在執行測試代碼之前等待腳本和http調用完成。但是,如果有一個永不停止的輪詢腳本,量角器將在一段時間後永遠等待並超時。
在angular1中,這可以通過使用$interval
執行輪詢來解決,量角器不會等待。不幸的是在angular2沒有$interval
並實現輪詢的正確方法似乎是Observable.interval
,所以這是我的代碼如下所示:
Observable.interval(500)
.map(x => this.getRandomData())
.subscribe(data => this.updateGraph(data));
測試時,其中該代碼運行頁面,量角器將超時。它等待頁面完成加載並認爲此腳本將在某個時候退出(實際上它將永遠運行)。
量角器識別的angular2中是否存在間隔機制,以便在運行UI測試之前不等待輪詢完成?
如果不是,我怎麼能告訴量角器在執行更多的測試代碼之前不要等待這個間隔完成?
編輯:爲了澄清,超時問題已經與angular1量角器存在,但可以通過使用$interval
是固定的,請參閱:
- Timed out waiting for Protractor to synchronize with the page after 50001ms
- How to implement intervals in protractor/selenium
這在angular2中不起作用,因爲沒有$interval
。
@ close-voter:你不瞭解哪部分?我會很樂意進一步解釋這個問題。 – magnattic
我複製/張貼您的文章到量角器問題:https://github.com/angular/protractor/issues/3349。你現在有沒有更好的解決方案? – zixia