2014-08-29 66 views
1

從我的理解來看,waitForAngular是在每一步執行的,在進行下一步之前,它會等待任何類型的角度渲染和/或$ http調用。量角器waitForAngular和angularfire/firebase

我遇到的問題是,我使用Angularfire/Firebase作爲我的後端,在我的測試中,當我點擊按鈕時 - 例如waitForAngular執行得太快,然後下一步發生在firebase之前結果回來了。

有沒有人知道一個簡單的方法來延長waitForAngular到等待任何Angularfire調用?這將解決我的問題,我可以擺脫所有這些可怕的睡眠呼叫。

+0

這是正確的,只要您沒有修改默認的'browser.ignoreSynchronization'值,就會執行waitForAngular。量角器應該等待任何$ http後端,如果不是那麼是一個錯誤,我建議你設置一個小的工作示例你的失敗,然後提交一個問題[這裏](https://github.com/angular/protractor/問題/新)。 – 2014-08-29 18:00:59

+1

您是否檢查過AngularFire e2e測試?他們都使用量角器並解決了您所描述的相同問題。 – Kato 2014-08-29 20:22:01

+0

@Kato AFAICS AngularFire e2e測試只是使用睡眠 – Rachel 2015-02-16 13:46:00

回答

1

如果你使用的是這樣的

element(by.css('.btn')).click() 
ptor.waitForAngular(); 
//execute something after 

你可以嘗試將其轉換爲一個嵌套promise resolve模式這樣

var ptor = protractor.getInstance(); 
ptor.findElement(protractor.By.css('.btn')).click().then(function(){ 
    //execute something after 
}); 

我只有一些基本的信息關於firebase但沒有曾經使用它。但我想這應該有助於promise/http請求。