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(某物);
});