Итак, я еще раз задал вопрос: Как издеваться над требуемым директивным контроллером в директиве UT, который в основном является моей проблемой, но кажется, что ответ на этот вопрос был "изменил ваш дизайн." Я хотел убедиться, что это невозможно. У меня есть директива, которая объявляет контроллер, который используется директивами детей. Теперь я пытаюсь написать тесты жасмина для директивы children, но я не могу их компилировать в тестах, потому что они зависят от контроллера. Вот как это выглядит:
addressModule.directive('address', ['$http', function($http){
return {
replace: false,
restrict: 'A',
scope: {
config: '='
},
template: '<div id="addressContainer">' +
'<div ng-if="!showAddressSelectionPage" basic-address config="config"/>' +
'<div ng-if="showAddressSelectionPage" address-selector addresses="standardizedAddresses"/>' +
'</div>',
controller: function($scope)
{
this.showAddressInput = function(){
$scope.showAddressSelectionPage = false;
};
this.showAddressSelection = function(){
$scope.getStandardizedAddresses();
};
this.finish = function(){
$scope.finishAddress();
};
},
link: function(scope, element, attrs) {
...
}
}
}])
дочерняя директива:
addressModule.directive('basicAddress360', ['translationService', function(translationService){
return {
replace: true,
restrict: 'A',
scope: {
config: '='
},
template:
'...',
require: "^address360",
link: function(scope, element, attrs, addressController){
...
}
}
}])
тест жасмина:
it("should do something", inject(function($compile, $rootScope){
parentHtml = '<div address/>';
subDirectiveHtml = '<div basic-address>';
parentElement = $compile(parentHtml)(rootScope);
parentScope = parentElement.scope();
directiveElement = $compile(subDirectiveHtml)(parentScope);
directiveScope = directiveElement.scope();
$rootScope.$digest();
}));
Нет ли способа проверить суб-директиву с жасмином, и если да, то что мне не хватает? Даже если бы я мог проверить сама директива без функций контроллера, я был бы счастлив.