指令属性单元测试

时间:2015-05-22 06:19:59

标签: angularjs karma-jasmine

我有以下指令

select `year`, `month`, if(salary is null, @prev_sal, @prev_sal := salary) salary
  from (
    select `years`.`year`, `months`.`month`, salary
      from `years` cross join `months` 
        left join salary_raise sr
          on sr.month = `months`.`month` 
            and sr.year = `years`.`year`
            and sr.employee_id = 1
      where (`years`.`year` = 2014 or `years`.`year` = 2015)      
      order by `years`.`year` asc, `months`.`month` asc
  ) q cross join (select @salary := null) qq

在abcController中,我有以下功能,我想测试。

 return {
        restrict: 'E',
        scope: {
            data: '=',
            getLink: '='
        },
        templateUrl: 'abc.html',
        controller: 'abcController'
    };

我正在尝试测试printData函数,这是我正在尝试编写的以下测试。

$scope.printData = function()
    {
        $scope.getLink().then(
            function(url) {
                $window.open(url);
                $window.focus();
            },
            function(response) {
                $log.error('Error opening  ' + response);
            }
        );

    };

我收到以下错误:

it('should print the visualizer report', inject(function(mockObjects) {
        scope.mockData = mockObjects.mockData;
        element = angular.element("<my-directive data='mockData'  get-link='test'/>");
        compile(element)(scope);
        scope.$digest();
        var childScope = scope.$$childTail;
        childScope.getPdfLink = getPdfLink();
        childScope.printData();
    }));

我做错了什么?

1 个答案:

答案 0 :(得分:0)

将功能传递给&#39;&amp;&#39;正如docs所述:

 return {
        restrict: 'E',
        scope: {
            data: '=',
            getLink: '&'
        },
        templateUrl: 'abc.html',
        controller: 'abcController'
    };


<div your-directive get-link="yourDelegatedMethod()"></div>