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>