Javascript 如何测试指令控制器功能?
我的指令控制器中有一个函数,我正在尝试测试,但找不到任何资源。我在每一次会议之前都有发言权Javascript 如何测试指令控制器功能?,javascript,angularjs,angularjs-directive,karma-runner,Javascript,Angularjs,Angularjs Directive,Karma Runner,我的指令控制器中有一个函数,我正在尝试测试,但找不到任何资源。我在每一次会议之前都有发言权 before each { scope = $rootScope ; $compile(element)(scope); scope.$digest(); } it('should u
before each {
scope = $rootScope ;
$compile(element)(scope);
scope.$digest();
}
it('should update days when datepicker is changed', function () {
scope.seldate = new Date('4/11/2014');
scope.stdate = new Date('4/1/2014');
scop`enter code here`e.days = 10;
scope.$digest();
scope.$apply(function() {
scope.seldate = new Date('4/12/2014');
scope.datePickerChange(); // This is a function in my directive controller
});
expect(scope.days).toBe(11);
});
app.directive('mydirective',function(){
return {
restrict:'E',
scope:{
days: '=',
selectedDate: '=',
startDate: '='
},
$scope.datePickerChange = function () {
//Sod is helper for start of the day with hours/mins/seconds set to 0
$scope.days = moment(new Date($scope.selectedDate)).sod().diff($scope.getStartDate(), 'days');
};
};
});
这引发了一个错误TypeError:Object#没有方法“datePickerChange”您的指令声明无效:
app.directive('mydirective',function(){
返回{
限制:'E',
范围:{
天数:“=”,
selectedDate:“=”,
起始日期:'='
},
链接:功能(范围、要素、属性){
scope.datePickerChange=函数(){
//Sod是小时/分钟/秒设置为0的一天开始的助手
scope.days=时刻(新日期($scope.selectedDate))
.sod().diff($scope.getStartDate(),'days');
};
}
}
});
除此之外,为了测试您的指令,您应该遵循Angular的github repo中的示例
基本思想是使用$compile执行指令并检查它
it('should do something',inject(函数($rootScope,$compile){
var scope=$rootScope.$new();
变量元素=$compile(“”)(范围);
//断言事物。
期望(范围.天数).达到(此处某物);
scope.datePickerChange();
预期(范围、天数)、toEqual(某物);
});