2016-08-26 33 views
7

testleri

expect($rootScope.$broadcast).not.toHaveBeenCalled(); 

sorun bazen orada olduğunu Testlerimi başarısız hale getiren $ locationChangeStart ve $ locationChangeSuccess etkinlikleri yayınlandı. Iyonik v1.3.0 aşağıdaki kodu

// update browser 
$rootScope.$watch(function $locationWatch() { 
    var oldUrl = trimEmptyHash($browser.url()); 
    var newUrl = trimEmptyHash($location.absUrl()); 
    var oldState = $browser.state(); 
    var currentReplace = $location.$$replace; 
    var urlOrStateChanged = oldUrl !== newUrl || 
    ($location.$$html5 && $sniffer.history && oldState !== $location.$$state); 

    if (initializing || urlOrStateChanged) { 
    initializing = false; 

    $rootScope.$evalAsync(function() { 
     var newUrl = $location.absUrl(); 
     var defaultPrevented = $rootScope.$broadcast('$locationChangeStart', newUrl, oldUrl, 
      $location.$$state, oldState).defaultPrevented; 

olanlar tetikler görünüyor bayrak yukarıdaki kodda doğrudur ve bu $ rootScope. $ Yayın tetikler "başlatılıyor". Soru - neden oluyor? Ve bu durumun üstesinden gelmenin en iyi yolu nedir? Şu anda $ rootScope ekledim. $ Digest(); Benim testlerde harekete geçmeden önce hangi ancak

teşekkür ederiz bu geçerli bir çözüm olup olmadığından emin değilim sorunu çözmek gibiydi

cevap

0

Bu bir cevap daha fazla bir yorum olabilir, ama yeterince itibar yok Yorum yazmak

$ locationChangeStart ve $ locationChangeSuccess diğer her şeyden önce tetiklendi mi? $ RootScope'tan önce bile mi? Ben $ locationChangeStart daha yüksek öncelik seviyesi daha sonra $ rootScope var anlıyorum.

app.on (işlev() {}) içinde herhangi bir şeyiniz var; ?