У меня есть директива, которую я хочу удалить, но я столкнулся с проблемой, что я не могу получить доступ к моей изолированной области. Здесь директива:
<my-directive></my-directive>
И код позади него:
angular.module('demoApp.directives').directive('myDirective', function($log) {
return {
restrict: 'E',
templateUrl: 'views/directives/my-directive.html',
scope: {},
link: function($scope, iElement, iAttrs) {
$scope.save = function() {
$log.log('Save data');
};
}
};
});
И вот мой unittest:
describe('Directive: myDirective', function() {
var $compile, $scope, $log;
beforeEach(function() {
// Load template using a Karma preprocessor (http://tylerhenkel.com/how-to-test-directives-that-use-templateurl/)
module('views/directives/my-directive.html');
module('demoApp.directives');
inject(function(_$compile_, _$rootScope_, _$log_) {
$compile = _$compile_;
$scope = _$rootScope_.$new();
$log = _$log_;
spyOn($log, 'log');
});
});
it('should work', function() {
var el = $compile('<my-directive></my-directive>')($scope);
console.log('Isolated scope:', el.isolateScope());
el.isolateScope().save();
expect($log.log).toHaveBeenCalled();
});
});
Но когда я распечатываю изолированную область, это приводит к undefined
. Что меня действительно смущает, если вместо templateUrl
я просто использую template
в моей директиве, тогда все работает: isolateScope()
имеет полностью scope
объект в качестве возвращаемого значения, и все отлично. Однако, как-то, при использовании templateUrl
он ломается. Является ли это ошибкой в ng-mocks
или в препроцессоре Karma?
Спасибо заранее.