2016-08-08 8 views
0

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

Я использую html2js для загрузки моих html-шаблонов. И бросает эту ошибку на $ компиляции:

Error: [$injector:unpr] Unknown provider: CommonServiceProvider <- CommonService

Вот как я установил мой тест:

beforeEach(inject(function ($rootScope, $compile, $controller, $q, $filter, $templateCache) { 

    //scope instance to use in test cases. 
    scope = $rootScope.$new(); 

    //set mock 
    var _commonService = MockCommonService($q, $filter).CommonService; 


    //Inject fake service into controller 
    var controller = $controller('PromoCreateGlobalCtrl', {$scope: scope, CommonService: _commonService}); 


    //for my directive tempalte 
    var titleSearchTmplt = $templateCache.get('directives/title-search/title-search.html'); 
    $templateCache.put('app/directives/title-search/title-search.html', titleSearchTmplt); 

    //for my main form template 
    var templateHtml = $templateCache.get('promotion/create/global/promo-global-create.html'); 
    var formElem = angular.element(templateHtml).find('form'); 


    $compile(formElem)(scope); //error is thrown on this line. 

    form = scope.form; 

    scope.$apply(); 

    //directiveElem = getCompiledElement(); 

}));

Как мне загрузить макет службы на контроллер директивы? Я думаю, что это и вызывает проблему. Кто-то сталкивается с тем же случаем для тестирования?

Проблема, похоже, вызвана тем, что CommonService загружается во второй раз при загрузке шаблона директивы. Или есть другая причина?

ответ

0

вам нужно впрыснуть службу в beforeeach

вар CommonService

beforeEach(inject(function ($rootScope, $compile, $controller, $q, $filter, 
$templateCache,_CommonService_){ 
CommonService=_CommonService_;} 

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

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