具有默认范围的指令的单元测试
unit testing of directive with default scope
我正在尝试对具有默认作用域(scope:false)的指令进行单元测试,但我无法注入其控制器的依赖关系。
var MyApp = angular.module('MyApp',['MyDirectives','MyServices','MyControllers']);
这是指令
var MyDirectives = angular.module('MyDirectives', []);
MyDirectives.directive('myAddress', [ '$timeout', function ( $timeout) {
return {
restrict: 'A',
require: 'ngModel',
link: function (scope, elm, attr, ctrl) {
if (!ctrl) {
return;
}
elm.on('focus', function () {
scope.AppData.ShowSeparateAddress = false;
});
}
};
}]);
这是我的控制器
var MyControllers = angular.module(' MyControllers', []);
MyControllers.controller('Step1', [
'$rootScope', '$scope', 'AppData', function ($rootScope, $scope, AppData) {
$scope.AppData = AppData.get();
}
这是我的应用服务
var MyServices = angular.module(' MyServices', []);
MyServices.factory('AppData', [function () {
var data;
return {
get: function () {
data = data || {};
return data;
}
};
}]);
这是地址指令的单元测试
beforeEach(module(MyApp));
var element, compiledElement, directiveElement;
var scope, compile, ele,AppData,controller;
beforeEach(inject(function(_$rootScope_, _$compile_){
scope = _$rootScope_.$new();
compile = _$compile_;
}));
beforeEach(inject(function( _$controller_, _AppData_){
AppData = _AppData_;
controller = _$controller_('Step1',{scope:scope, AppData:AppData});
}));
function getCompiledElement(ele) {
element = angular.element(ele);
compiledElement = compile(element)(scope);
scope.$digest();
return compiledElement;
}
it('should set show separate addrress as false when focussed',function(){
ele = '<input type="text" data-my-address />';
directiveElement = getCompiledElement(ele);
console.log( directiveElement);
expect( scope.AppData.ShowSeparateAddress ).toBe(false);
});
});我收到以下错误
Error: [$injector:unpr] Unknown provider: AppDataProvider <- AppData
我也尝试通过提供来嘲笑服务,但它没有用任何帮助或想法??
控制器签名中有三个参数,并且只传递两个参数。您应该添加$rootScope
:
controller = _$controller_('Step1',{rootScope:scope, scope:scope, AppData:AppData});
相关文章:
- AngularJS指令单元测试中未定义的函数
- AngularJS:指令限制:“E”阻止在Jasmine单元测试中调用元素click()事件
- 用于单元测试的模拟Angular引导程序ui指令
- 单元测试指令-无法强制使用假数据
- 如何在Angular 2中对指令进行单元测试2
- AngularJS单元测试指令's属性值
- 如何对需要测试其发射的角度指令进行茉莉花单元测试
- 为什么这个 Angular 指令没有在 Jasmine 单元测试中编译
- 使用 templateUrl 和 WITHOUT Karma 对 Angular 指令进行单元测试
- 具有默认范围的指令的单元测试
- 对指令进行单元测试,该指令的模板都是带有带有脚本标记的文件
- 单元测试 Karma Jasmine 语法错误:在“&”角度指令绑定上解析错误
- 无法对使用 $window 的 Angular 指令进行单元测试
- 单元测试角度指令包装光滑网格
- 无法在单元测试中编译从 Angular 1.3.0 开始的包含指令
- 角度指令控制器单元测试使用窗口.确认
- 对不考虑元素更改的 Angular 指令进行单元测试
- Karma 单元测试 Angular JS 指令与 externalUrl
- Angularjs指令单元测试问题
- 角指令单元测试中的模拟控制器实例化