2014-09-11 6 views
25

ho un seguente controller:

.controller('ProjectUserAddCtrl', ['$scope', 'ProjectUser', '$q', 'i18nNotifications',  
function($scope, ProjectUser, $q, i18nNotifications) { 
    var buildUnassignedUsers = function(users, project) { 
     var unassignedUsers = []; 
     angular.forEach(users, function(user) { 
      var match; 
      angular.forEach(project.projectUsers, function(projectUser) { 
       if(match) {return;} 
       if(projectUser.user.id === user.id) { 
        match = true; 
       } 
      }); 

      if(!match) { 
       unassignedUsers.push(user); 
      } 
     }); 

     $scope.unassignedUsers = unassignedUsers; 
    };  

    $q.all([ 
      $scope.users, 
      $scope.project 
    ]).then(function(result) { 
      buildUnassignedUsers($scope.users, $scope.project); 
      $scope.$watch('project', function(newVal) { 
       buildUnassignedUsers($scope.users, $scope.project); }, true 
      ); 
    }); 
}]); 

E un seguente test in gelsomino:

describe('ProjectUserAddCtrl', function() { 
    var ctrl; 
    beforeEach(function(){ 
     $scope.users = []; 
     $scope.project = { 
      projectUsers: [] 
     }; 
     ctrl = $controller('ProjectUserAddCtrl', {$scope:$scope, ProjectUser:ProjectUser, $q:$q, i18nNotifications:i18nNotifications}); 
    }); 

    it('should create a new instance', function() { 
     expect(ctrl).toBeDefined(); 
    }); 

    // this test fails! 
    it('should create a list of unassigned users', function() { 
     $scope.$apply(); // need to call apply to resolve promises 
     expect($scope.unassignedUsers).toBeDefined(); 
    }); 

}); 

'dovrebbe creare un elenco di test degli utenti non assegnati non riesce con questo errore:

TypeError:' undefined 'non è una funzione (valutazione $ browser. $$ checkUrlChange())

Non ho davvero idea del perché. Qualsiasi aiuto apprezzato.

+5

Ho appena avuto lo stesso problema. Penso che questo sia un bug in 1.2.24, il downgrade a 1.2.23 lo ha risolto. – Buzzy

+2

Grazie, ho eseguito il downgrade alla versione 1.2.23 e funziona – h3ndr1ks

+1

@Buzzy dovresti metterlo come risposta ... – Daryn

risposta

56

Sembra che questo problema si verifichi quando si verifica una mancata corrispondenza tra angular.js e angular-mocks.js Assicurarsi che i due file siano della stessa versione.

Si prega di ignorare il mio commento originale alla domanda

+1

Voglio solo dire che questo mi ha aiutato moltissimo. Grazie mille. –

+1

anche tu mi hai aiutato, tks ^^ –

+1

Ricevo ancora questo errore con le versioni impostate sullo stesso 1.3.14 – nathanengineer

4

avevo sperimentato esattamente gli stessi problemi con il nostro progetto rotaie.

Abbiamo aggiornato angular.js alla versione 1.2.24, quindi il nostro cucchiaino di testuite ha iniziato a non funzionare. Ho esaminato le origini angolari, la storia dei commit, ecc., E poi mi sono reso conto che avevamo dimenticato di aggiornare i mock angolari (stavamo usando la versione 1.2.20, quindi dobbiamo eseguire bundle update rails-assets-angular-mocks per forzare questa modifica). Dopo aver applicato nuovi mock (hanno già la funzione $$checkUrlChange), tutto ha iniziato a funzionare.

Quindi sembra che tu provi anche a usare vecchi oggetti mistici.

Problemi correlati