2016-03-29 25 views
4

Aşağıdaki kodu, bir pencerenin yeniden boyutlandırılmasını denetleyen ve bir işlevi çağıran basit bir yönerge bağlantısı işlevinde var.

return { 
    restrict: 'A', 
    link: function (scope) { 
     angular.element($window).on('resize', function() { 
      scope.getSize(); 
     }); 

     scope.getSize() = function() { 
      return true; 
     }; 
    } 
} 

Ben scope.getSize() denir ($window).on('resize') üzerinde test etmek çalışıyorum. Benim testlerde

ben şöyle benim yönergeyi derlemek:

beforeEach(inject(function($rootScope, $compile, _$window_) { 
    $window = _$window_; 
    $scope = $rootScope.$new(); 
    element = angular.element('<div data-watch-resize></div>'); 
    element = $compile(element)($scope); 
    $scope.$digest(); 
})); 

Sonra pencerenin yeniden boyutlandırma fonksiyonu casusluk ve işlev

spyOn($window, 'resize'); 
$window.innerWidth = 1026; 
$scope.$digest(); 
expect(element.scope().getSize()).toHaveBeenCalled(); 

ancak ben almak denilen bekleniyor olması nedeniyle hata aşağıdaki

Error: resize() method does not exist

ben re değilim neden emin değilsiniz, yanlış yaptığım belli bir şey var mı?

+0

u muhtemelen bir dom yöntemidir olarak yeniden boyutlandırma yöntemi için sahte işlev oluşturmanız gerekir. –

+0

'spyOn ($ window,' resize ') ve .callFake (function {) { // bir şeyler yapın})' i denemeyi denedim; ancak bu, – gardni

+0

çalışmasına görünmüyor olabilir. innerWidth iki kez yani bir yeniden boyutlandırma eylemi var? –

cevap

6

herkes benzer bir şey üzerinde sıkışırsa:

it('should expect scope.getSize() to have been called on window resize', function() { 
    spyOn(element.isolateScope(), 'getSize'); 
    $window.innerWidth = 1026; 
    angular.element($window).triggerHandler('resize'); 
    $scope.$digest(); 
    expect(element.isolateScope().getSize).toHaveBeenCalled(); 
}); 
+0

Teşekkür ederim. Ben hemen hemen aynı yönerge ve yapılandırılmış yapılandırılmış var, ancak bu hatayı alıyorum: 'getSize() için casusluk yapmak için bir nesne bulamadınız mı? – isherwood

+0

@isherwood, aradığınız şeyin var olmadığını öneriyor mu? Yukarıdaki eşdeğerde element.isolateScope() orada bulunmuyordu – gardni

+0

Hiç casusluk işe yaramadı, ama casusları çıkararak ve derlemeden sonra beklediğim sınıf değişikliklerini kontrol ederek etrafta dolaştım. – isherwood

İlgili konular