2016-08-08 14 views
0

Ich erstelle ein Unit-Testformular meine Formularüberprüfung. In meinem Hauptformularvorlagen-Controller mache ich mir über den injizierten Dienst lustig. Und die Formularvorlage enthält auch eine Direktive, die den gleichen Dienst injiziert.

Ich verwende html2js, um meine HTML-Vorlagen zu laden. Und es wirft diesen Fehler auf $ Kompilierung:

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

Hier ist, wie ich meinen Test-Set:

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(); 

}));

Wie soll ich den Scheindienst auf den Controller der Direktive laden? Ich denke, dass das das Problem verursacht. Hat jemand in den gleichen Fall zum Testen gelaufen?

Das Problem scheint durch den CommonService verursacht werden geladen beim zweiten Mal, wenn ich die Richtlinie Vorlage laden. Oder gibt es andere Gründe?

Antwort

0

müssen Sie den Dienst in before injizieren

var CommonService

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