2015-11-16 52 views
1

我相信,這是一個很好的做法,告知用戶基於Angular的應用程序正在加載。我的意思是,在Angular 2的情況下,它就是<view>Loading...</view>。我相信在AngularJS(v1)中也有同樣的做法。因此我相信應該有一種方法可以使用Protractor來測試應用程序的這一方面,因爲它是「用於AngularJS應用程序的端到端測試框架」。什麼是量角器的方式來測試之前顯示角加載

對我來說這是suggested有一種方法可以做到這一點,我應該問這裏。那麼,你能幫我找到他心中有Nick的方法嗎?它不一定必須與Angular 2兼容。 AngularJS(v1)方法就足夠了,因爲我相信一旦他們移植了量角器就會移植它。

這個問題似乎與Protractor: test loading state類似,但與OP不同,我想確保在測試完成之前未加載Angular應用程序,所以我猜應該有一種方法來暫停/停止加載應用程序(但我可能是錯的)。

回答

1

我通常避免測試這樣的事情,因爲他們往往是非常flair。除非有一些要求測試裝載機,否則我不這麼做。

您可以使用browser.ignoreSynchronization = true而不是等待角度加載到頁面上,然後聲明您的加載器在那裏。

與此唯一的問題是,你會努力確保沒有角加載。除非手動引導並構建某種延遲或「無引導」觸發器,但開始危及應用程序只是爲了測試加載狀態,否則沒有很好的方法來阻止角度應用程序進行引導。

1

只需添加到@尼克的時候,你肯定會需要把量角器和角之間的同步關閉並設置browser.ignoreSynchronization = true;

然後,你可以/應該添加一個explicit wait等待負載指示(例如,它可能是一個微調圖像)become visible

var EC = protractor.ExpectedConditions; 
browser.wait(EC.visibilityOf(element(by.id("#loading"))), 5000, "Loading indicator has not become visible"); 

超時錯誤將意味着加載元素(在這種情況下,具有id="loading"的元素)在5秒內未變得可見。

不要忘記將同步回測試完成後:

browser.ignoreSynchronization = false; 
相關問題