Soy la unidad que prueba una de mis directivas. Su estructura básica es así
angular.module("MyApp")
.directive("barFoo", function () {
return {
restrict: "E",
scope: {},
controller: function ($scope, $element) {
this.checkSomething = function() { .... }
},
link: function(scope, element) { .... }
}
});
En mi prueba de unidad quiero probar la función "checkSomething", así que probé
var element = $compile("<barFoo></barFoo>")(scope);
var controller = element.controller()
...
Sin embargo, el controlador no está definido. ¿Es posible acceder al controlador de la directiva?
Respuestas
1 para la respuesta № 1El pegamento es tu alcance para que puedas hacer.
controller: function ($scope, $element) {
this.checkSomething = function() { .... }
$scope.controller = this;
},
pero creo que sería una buena práctica adjuntar cada función al alcance como
controller: function ($scope, $element) {
$scope.checkSomething = function() { .... }
},
y luego su
var element = $compile("<barFoo></barFoo>")(scope);
var checksomthingResult = scope.checkSomething ()