2016-12-22 21 views
13

sonra bitirmek için ben uçtan uca kadar Protractor kullanarak açısal 2 uygulamayı test istiyorum ama mesajla şaşırıp:Başarısız: bekleme süresi doldu asenkron Açısal görevleri 11 saniye

"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds." 

Benim conf dosyam.

exports.config = { 
    directConnect: true, 
    specs: ['spec.js'], 

    // For angular2 tests 
    useAllAngular2AppRoots: true, 
} 

Chrome açılır ve web sitesi de açılır, daha sonra zaman aşımına kadar hiçbir şey olmaz.

Senkronizasyonu devre dışı bırakırken (browser.ignoreSynchronization = true; kullanarak), sorun yok. Ama "otomatik bekleme" özelliğini, İletki kullanmanın başlıca avantajlarından birini kaybediyorum.

Uygulama tamamen açısal 2'ye dayanmaktadır. Peki bu neden çalışmaz?

Geliştiricilerimiz, yoklama yapmadığımızı söyledi (Protractor documentation uyarınca olası nedenlerden biri). Bu arada, websocket mimarisini kullanıyoruz. Bir bağlantı var mı bilmiyorum.

Aslında, bu sorunu nasıl gidereceğimi bilmiyorum.

Birisi yardım edebilir mi, lütfen?

+0

Olası kopyalar (http://stackoverflow.com/questions/ 40817733/iletki-test-a-bootstrap-modal-değil-sayfa-zaman aşımı) –

+0

Çözümün altında çalışıp çalışıp çalışmadığını kontrol edebilir misiniz? – AdityaReddy

cevap

6

Tahmininiz doğru. Bu hata, angular2 uygulamanızda çalıştırılan sıra dışı görevler olduğunda ortaya çıkar.

Evet, en sık karşılaşılan neden, uygulama sürekli olarak $ timeout veya $ http sorgularken, iletici süresiz bekleyip zaman aşımına uğrayacaktır. Uygulama varsayılan zaman aşımı değeri 11 saniyedir

farklı zaman aşımları fazla 11 saniye

fazla bilgi için here bakınız nereye götürdüğünü Ama bu da senaryolarda oluşabilir. Hala konuyu görmekte olup olmadıklarını config.js aşağıda değerini ayarlayarak değiştirebilirsiniz ve denemek ve görebileceğiniz

/** 
    * The timeout in milliseconds for each script run on the browser. This 
    * should be longer than the maximum time your application needs to 
    * stabilize between tasks. 
    */ 
    allScriptsTimeout?: number; 
2

geçici bir cevap here rapor olarak browser.ignoreSynchronization, bunu düzeltir sağlayan.

browser.ignoreSynchronization = true; 

(hata atar kod)

browser.ignoreSynchronization = false; 
1

test case değiştirin ve ilk tıklamadan sonra browser.waitForAngularEnabled(false); koymak çalışmalıdır.

Ancak yöntem allScriptsTimeout: 110000 olarak conf.js dosyasında varsayılan zaman aşımı geçersiz kılma edilebilir önerilen

[Açıölçer bir önyükleme kalıcı sınamak - açısal değil sayfa - zaman aşımı] arasında
İlgili konular