我正在为Angular指令进行Jasmine单元测试。我有一个在我的指令中使用的父函数,如何测试它?我的代码如下:
这是我指令的一半:
link: function (scope, element, attrs, ngModelCtrl){
scope.cancel=function(){
scope.deleteConfig=false;
scope.$parent.$parent.deleteMode=false;
$('#window-block').remove();
$('#confirm-delete-modal').remove();
};
scope.submit = function(){
scope.deleteConfig=false;
scope.$parent.$parent.deleteMode=false;
scope.$parent.deleteModeConfig(scope.analytic,scope.config);
$('#window-block').remove();
$('#confirm-delete-modal').remove();
};
这是我对这段代码进行单元测试的一部分:
it('should remove modal on cancel', function() {
isolatedScope.cancel();
});
it('should submit modal on submit', function() {
isolatedScope.submit();
});
结束是第一个通过测试的取消函数,但是submit函数失败了,错误是:undefined不是构造函数(评估'范围。$ parent.deleteModeConfig(scope.analytic,scope.config) )')
有人可以帮助我吗?谢谢!
答案 0 :(得分:0)
没有回答,但不得不说: 使用父作用域不是一个很好的做法。您应该隔离范围并通过属性提供函数来操作该属性。如果要操作的属性很多,则通过包含所有必需函数的属性传递单个对象。测试时,只需模拟方法/配置对象并验证调用
答案: 在代码中测试它的方法是创建一个父作用域的模拟,它包含父作用域本身的属性,该属性包含您要检查的属性。