2014-09-11 19 views
25

Mam następujący Kontroler:

.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 
      ); 
    }); 
}]); 

a następujący test w jaśminu:

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(); 
    }); 

}); 

"należy utworzyć listę nieprzypisanych użytkowników test nie powiedzie się z tego błędu:

błąd typu:„niezdefiniowane”nie jest funkcją

(przeglądarka oceny $ $$ checkUrlChange()).

Naprawdę nie mam pojęcia, dlaczego. Każda pomoc doceniona.

+5

Po prostu miałem ten sam problem. Myślę, że jest to błąd w wersji 1.2.24, który został obniżony do wersji 1.2.23. – Buzzy

+2

Dzięki, zmniejszyłem do wersji 1.2.23 i działa – h3ndr1ks

+1

@Buzzy powinieneś umieścić to jako odpowiedź ... – Daryn

Odpowiedz

56

Wygląda na to, że problem ten występuje, gdy występuje niezgodność między angular.js i maths.js. Upewnij się, że oba pliki mają tę samą wersję.

proszę zignorować mój oryginalny komentarz na pytanie

+1

Po prostu chcę powiedzieć, że pomogło mi to ogromnie. Dziękuję bardzo. –

+1

Ty też mi pomogłeś, tks ^^ –

+1

Nadal dostaję ten błąd z wersjami ustawionymi do tego samego 1.3.14 – nathanengineer

4

ja doświadczyliśmy dokładnie te same problemy z naszym projektem szyn.

Uaktualniliśmy plik angular.js do wersji 1.2.24, a następnie testsuite na łyżeczkę przestał działać. Zajrzałem do angular.js, źródła/commits, itp., A następnie zdałem sobie sprawę, że zapomnieliśmy zaktualizować makiety kątowe (używaliśmy starej wersji 1.2.20, więc musimy wymusić na tej zmianie bundle update rails-assets-angular-mocks). Po zastosowaniu nowych mocków (mają już funkcję mock), wszystko zaczęło działać.

Wygląda więc na to, że starasz się również używać starych obiektów mocks.

Powiązane problemy