2016-08-26 10 views
7

mam realizacji testów jednostkowych dla jonowego aplikacji i trzeba sprawdzić, czy nie ma żadnych zdarzeń były transmitowane na $ rootScope

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

Problemem jest czasami istnieją Wysyłane są zdarzenia $ locationChangeStart i $ locationChangeSuccess, co powoduje niepowodzenia moich testów. Wydaje się, że jonowy v1.3.0 wyzwala tych, w kodzie poniżej

// 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; 

W „inicjalizacji” flaga jest prawda w powyższym kodzie i to wyzwala $ rootScope. $ Transmisję. Pytanie - dlaczego to się dzieje? A jaki jest najlepszy sposób, aby poradzić sobie z tą sytuacją? W tej chwili dodałem $ rootScope. $ Digest(); przed podjęciem działań w moich testach, które wydawało się rozwiązać problem jednak nie jestem pewien, czy to ważne rozwiązanie

Dziękuję

Odpowiedz

0

To może być bardziej komentarz niż odpowiedzi, ale nie mam wystarczająco dużo reputacji napisać komentarz.

Czy $ locationChangeStart i $ locationChangeSuccess nie zostały uruchomione przed wszystkim innym? Nawet przed $ rootScope? Jak rozumiem, $ locationChangeStart ma wyższy poziom priorytetu niż $ rootScope.

Czy masz coś w app.on (function() {}); ?

Powiązane problemy