2015-10-13 1 views
0

Я использую videogular и создал директиву, для которой требуется видеогласная директива.Издевательство над директивой в другом модуле в Angularjs

Все это работает нормально, но не хочу, чтобы модуль тестировал мою директиву.

Я хотел бы высмеять директиву videogular, чтобы я мог манипулировать возвратом данных через API.

Однако моя директива всегда подбирает конкретную реализацию видеоглаза.

Я пытаюсь издеваться над реализацией приведенной ниже директивы ниже. Затем я издеваюсь над своим модулем, как обычно, для модульных тестов.

beforeEach(angular.mock.module('com.2fdevs.videogular')); 
beforeEach(angular.mock.module('com.2fdevs.videogular'),function($provide,$controllerProvider){ 
    videogular = function(){ 
     return { 
      template: '<video class="test"></video>', 
      transclude: true 
     } 
    }; 
    $controllerProvider.register('vgController', function(_$scope_){ 
     $scope = _$scope_; 
     $scope.totalTime = 100; 
    }); 
    $provide.factory('videogularDirective', videogular); 
}); 

Я попытался ввести его таким же образом и в свой собственный модуль с тем же результатом.

Как я могу заставить его использовать мою ложную не конкретную реализацию?

теперь у меня

beforeEach(angular.mock.module('com.2fdevs.videogular')); 
beforeEach(angular.mock.module('com.2fdevs.videogular'),function($provide,$controllerProvider,$compileProvider){ 
    videogular = function(){ 
     return { 
      template: '<video class="test"></video>', 
      transclude: true 
     } 
    }; 
    $provide.factory('videogularDirective', videogular); 
    $compileProvider.directive('videogularDirective', videogular); 
}); 
beforeEach(angular.mock.module('irisApp')); 
beforeEach(angular.mock.module('irisApp', function ($provide) { 

    $provide.constant('LoggingService', require('../../../server/mocks/LoggingService.mock')); 
    $provide.constant('run', {}); 

})); 
beforeEach(angular.mock.inject(function (_$compile_, _$rootScope_) { 
    $rootScope = _$rootScope_; 
    $compile = _$compile_; 
})); 

Но она по-прежнему использует конкретную директиву.

ответ

1

Вы можете переопределить директивы, но вы должны использовать $compileProvider для этого, т.е .:

beforeEach(angular.mock.module('com.2fdevs.videogular')); 
beforeEach(angular.mock.module('com.2fdevs.videogular'),function($compileProvider, $controllerProvider){ 
    // ... 
    // same as above 
    $compileProvider.directive('videogularDirective', videogular); 
}); 
+0

Я попробовал этот подход, см мой код в настоящее время выше, я все еще получаю конкретную реализацию. Должно быть, я делаю что-то глупое? – madlad

+0

Можете ли вы убедиться, что реальный код 'videogularDirective' загружен * NOT *? –

 Смежные вопросы

  • Нет связанных вопросов^_^