2014-07-15 138 views
5

我們有一個使用UI路由器構建的應用程序,其中有一些路徑解析。我們正試圖在其上運行它的一些量角器測試,但它似乎是默認browser.get()不等待UI路由器完全解決量角器測試和UI路由器不等待解決

下面是我們的簡單測試

describe('coach pages', function() { 

    beforeEach(function() { 
    browser.get("/"); 
    }); 

    it('should have the right title', function() { 
    expect(browser.getTitle()).toBe('The Title'); 
    }); 

    it('should have a heading', function() { 
    expect(element(by.css('#test')).isPresent()).toBeTruthy(); 
    }); 

}); 

第一個經過,發現網頁標題,但標題犯規

如果添加此

browser.sleep(1000);

就在第二個期望它通過?

不應該量角器等待默認情況下完成解析?它與UI路由器有些衝突嗎?

它值得補充的是,沒有解決它的任何路線似乎都按預期等待它,它隻影響有附加解決方案的路線?

+0

只需在github上添加對相關問題的引用:https://github.com/angular/protractor/issues/789#issuecomment-54083578 – morgs32

回答

0

在執行任何操作之前,量角器要求Angular等待,直到 頁面同步。這意味着所有超時和http請求已完成。

也就是說從timeouts from protractor

所以報價,如果你想有量角器等的方法來完成,以$超時包裹。 $超時默認時間是0秒。但是,您確實需要實現$ timeout調用$ apply,這會啓動摘要循環。這可能會影響性能。你只需要自己嘗試一下。

更新

舊的答案是不是最好的方法,從我用後來完全不同。

等待頁面加載的最可靠方法是等待頁面上顯示或呈現元素。從這個意義上講,這更可靠。

+0

想知道,並不是所有的javascript函數都會阻止waitForAngular腳本解析它在瀏覽器中運行。 – Olov