Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 定向属性单元测试_Angularjs_Karma Jasmine - Fatal编程技术网

Angularjs 定向属性单元测试

Angularjs 定向属性单元测试,angularjs,karma-jasmine,Angularjs,Karma Jasmine,我有以下指示 return { restrict: 'E', scope: { data: '=', getLink: '=' }, templateUrl: 'abc.html', controller: 'abcController' }; 在abcController中,我有下面这个我想测试的函数 $scope.printData = function

我有以下指示

 return {
        restrict: 'E',
        scope: {
            data: '=',
            getLink: '='
        },
        templateUrl: 'abc.html',
        controller: 'abcController'
    };
在abcController中,我有下面这个我想测试的函数

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

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

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

有什么问题吗?

用“&”传递函数,如上所述:

返回{
限制:'E',
范围:{
数据:'=',
getLink:“&”
},
templateUrl:'abc.html',
控制器:“abcController”
};

我们需要查看指令的html代码如果要测试printData()函数(它是abcController的一部分),为什么不为abcController编写单元测试,而不是为指令编写单元测试?
scope.test
在何处以及如何定义?我们的团队已经在其余测试中采用了上述方法。我们可以测试另一个函数是控制器,并且可以使用$$childTail调用。这并不能回答我的问题。您正在通过“test”作为get link属性。消息说getLink不是一个函数。所以问题在于“测试”不是一个函数。那么,在哪里以及如何定义测试呢?
  “$scope.getLink is not a function
 return {
        restrict: 'E',
        scope: {
            data: '=',
            getLink: '&'
        },
        templateUrl: 'abc.html',
        controller: 'abcController'
    };


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