2014-07-25 34 views
34

Angular E2E testini yavaşça iletici kullanarak yazmanın bir yolu var, böylece neler olduğunu izleyebilirim?İletki yavaş çalışacak şekilde üretilebilir mi?

+0

Um, Ne? Bunu neden istiyorsun? –

+6

Belirli bir testi çalıştırıp etkileşimin gerçekleşmesini izlemek istiyorum. Bazen hata mesajları ezoteriktir ve sadece eylemin gerçekleşmesini izlemek benim asıl meseleyi daha hızlı tespit etmeme, düzeltmemize ve hata mesajını daha sonra güncellememe izin verir. Teşekkürler! – cortfr

cevap

58

Bunu yapmak benim çözümümdür. Bu nedenle, temel olarak, her bir eklenmiş eylemden önce ek olarak 100 ms'lik bir gecikmeyi sıralayan geçerli kontrol akışı execute işlevi için bir dekoratör oluşturdum.

Bu

herhangi testler çağrılır önce ( describe bloğun dışında) çalıştırılması gerekiyor

var origFn = browser.driver.controlFlow().execute; 

browser.driver.controlFlow().execute = function() { 
    var args = arguments; 

    // queue 100ms wait 
    origFn.call(browser.driver.controlFlow(), function() { 
    return protractor.promise.delayed(100); 
    }); 

    return origFn.apply(browser.driver.controlFlow(), args); 
}; 
+7

Bu çılgın :) +1 – alecxe

+4

Bu sadece mükemmel! İletici ile bilet açacağım - her bir komutu kutunun dışında bırakma yeteneğini desteklemeli - hata testi başarısız olduğunda yardımcı olmaktan daha fazlası. – WTK

+1

Bu sweeeeet – Melbourne2991

13

Aynı yorumda George Stocker'ın dediği gibi, bunu neden yapmak istediğinizi bilmiyorum ... ama testinizde istediğiniz zaman her zaman bir uyku ekleyebilirsin.

browser.sleep(6000); 
+1

Tamam, teşekkürler ... Sanırım aradığım her söz tamamlandıktan sonra kontrol akışına kısa bir uyku ekleyeceğim bir şey. – cortfr

+0

Teşekkürler, Bir çekicilik gibi çalışır! :) –

11
Kodunuzdaki komutu yerleştirerek 'ayıklama modunda' girebilirsiniz

: In

browser.pause(); 

hata ayıklama modunu kullanarak terminalinizde şu çıktıyı görürsünüz:

Sonra olabilir: repl girerek d

  • tüm öğelerle etkileşimde nerede interaktif modda Enter girerek c
  • girerek emriyle

    • Çalıştır komutunu sonraki ayıklayıcı açıklamaya devam et (browser.pause() sonraki)
  • İlgili konular