我正在创建一个单元测试表单我的表单验证。在我的主表单模板控制器中,我正在模拟注入的服务。并且表单模板还包含一个注入相同服务的指令。
我正在使用 html2js 加载我的 html 模板。它在 $compile 上抛出这个错误:
错误:[$injector:unpr] 未知提供者: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 引起的。还是有其他原因?