2016-03-28 14 views
0

Gözetlemek istediğim zor bir işleve sahibim.sinon bir denetleyici üzerinde bulunan bir casus işlevi (bu)

$rootScope.AlertsGlobal = {}; 

    this.updateHeight = function (clientHeight) { 
    $rootScope.AlertsGlobal.clientHeight = clientHeight; 

}; 

Bu

var GlobalAlertsController = function() { 
     this.updateHeight = function (clientHeight) { 
    $rootScope.AlertsGlobal.clientHeight = clientHeight; 
} 

fonksiyon direktifleri kontrol içinde yaşayan ve başka bir kontrol birimi tarafından gerekli olan ... açısal kontrol şöyle

var GlobalAlertsController = function() { 
} 

(bırım test fark gerektirir ?).

require: 'MainGlobalAlerts', 

benim birim testinin İçinde ben bu updateHeight() farklı şekillerde bir çift casus Sinon çalıştık

html = angular.element("<my-directive> </my-directive") 
element = $compile(html)($rootScope) 
$rootScope.$digest(element) 
scope = element.scope() // note html and scope are defined below describe 

benim yönergeyi dışarı alay.

sinon.spy(scope, 'updateHeight') 

sinon.spy($rootScope, 'updateHeight') 

Ancak benim hata bildirimi updateHeight bununla tanımlanan mı

Typeerror: Attempted to wrap undefined property updateHeight as a function 

beri bunu casusluk edemez, bu yöntemi çağırmak için nasıl emin değilim.

element = $compile('<my-directive>')($scope) 
var controllerInstance = element.controller('myDirective'); 
sinon.spy(controllerInstance, 'updateHeight'); 

, $scope aracılığıyla kontrolör örneklerini ulaşmak içinde controllerAs sözdizimi kullanabilmek için için:

cevap

1

Denetleyici örneği (this) kapsamına kullanılamaz, böyle bir şey ile, controller method yolu ile alınmasını sağlayan sahiptir direktif. Düzenli controllerAs avantajlarının yanı sıra daha iyi test edilebilirlik sunar.

+0

Teşekkürler, kesinlikle bunu deneyeceğim. Kodun test edildiği şekilde kontrolüm yok. – Winnemucca

İlgili konular