2014-09-11 31 views
25

Ben şu denetleyicisi var:

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

Ve yasemin bir aşağıdaki testi:

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

}); 

bir işlev değil 'tanımsız'

:

TypeError: bu hata ile başarısız testi 'atanmamış kullanıcıların bir listesini oluşturmak gerekir' (değerlendirirken $ tarayıcı $$ checkUrlChange().)

Neden olduğu hakkında hiçbir fikrim yok. Herhangi bir yardım takdir edildi.

+5

Sadece aynı sorunu yaşadım. Bunun 1.2.24'teki bir hata olduğunu, 1.2.23'e düştüğünü düşünüyorum. – Buzzy

+2

Teşekkürler, ben 1.2.23'e düşürdüm ve – h3ndr1ks

+1

@ Bulanık çalışıyorum. Bu soruya cevabını vermelisin ... – Daryn

cevap

56

Angular.js ve angular-mocks.js arasında uyumsuzluk olduğunda bu sorun oluşur. İki dosyanın aynı sürümde olduğundan emin olun.

bizim raylar proje ile tam olarak aynı sorunları yaşamış

+1

Sadece bu bana çok yardımcı oldu. Çok teşekkür ederim. –

+1

bana da yardım ettiniz, tks ^^ –

+1

Hala bu hatayı aynı 1.3.14 olarak ayarlanmış olan bu hata alıyorum – nathanengineer

4

soruya benim orijinal yorumunu görmezden gelin.

Angular.js dosyasını 1.2.24 sürümüne yükselttik ve ardından çay kaşığı testimiz başarısız oldu. Angular.js kaynaklarına baktım/hikaye ödevi vb. Yaptım ve fark ettik ki, açısal alayları güncellemeyi unutmuştuk (eski 1.2.20 sürümünü kullanıyorduk, bu yüzden bu değişikliği zorlamak için bundle update rails-assets-angular-mocks'u çalıştırmamız gerekiyor). Yeni alaylar uyguladıktan sonra (zaten $$checkUrlChange işlev alayına sahipler) her şey çalışmaya başladı.

Yani eski alay nesnelerini kullanmayı denediğiniz gibi görünüyor.