2014-09-11 50 views
25

我有以下控制器:

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

而且在茉莉花以下測試:

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

}); 

'應創建未分配用戶列表'測試失敗並出現此錯誤:

TypeError:'undefined'不是函數(評估$ browser。$$ checkUrlChange())

我真的不知道爲什麼。任何幫助讚賞。

+5

我剛剛有同樣的問題。我認爲這是1.2.24中的一個bug,降級到1.2.23解決了它。 – Buzzy 2014-09-11 11:02:45

+2

謝謝,我降級到1.2.23,它的工作原理 – h3ndr1ks 2014-09-11 11:36:04

+1

@Buzzy你應該把它作爲答案... – Daryn 2014-09-12 18:43:06

回答

56

看起來這個問題發生在angular.js和angular-mocks.js之間不匹配時請確保這兩個文件的版本相同。

請忽略我原來到

+1

我只想說這對我有巨大的幫助。非常感謝。 – 2014-10-12 15:57:12

+1

你也幫了我,tks ^^ – 2014-11-06 11:16:04

+1

我仍然收到這個錯誤,版本被設置爲相同的1.3.14 – nathanengineer 2015-03-29 22:32:09

4

我曾與我們的Rails項目經歷一模一樣的問題的問題發表評論。

我們將angular.js升級到1.2.24,然後我們的茶匙測試套件開始失敗。我查看了angular.js源文件/提交的故事等,然後意識到,我們忘記了更新角度模擬(我們使用的是舊版本1.2.20,所以我們需要運行bundle update rails-assets-angular-mocks來強制執行此更改)。應用新的模擬(他們已經有$$checkUrlChange功能模擬)後,一切開始工作。

所以它看起來像你也嘗試使用舊的嘲笑對象。