2014-08-29 34 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请求。