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?