如何使用茉莉花在指令中测试范围父函数



我正在为 Angular 指令进行 Jasmine 单元测试。我有一个在我的指令中使用的父函数,如何测试它?我的代码如下:

  1. 这是我指令的一半:

                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();
                };
    
  2. 这是我对这段代码的单元测试的一部分:

    it('should remove modal on cancel', function() {
        isolatedScope.cancel();
    });
    it('should submit modal on submit', function() {
        isolatedScope.submit();
    });
    

结束是第一个取消函数通过测试,但提交函数失败,错误是:未定义不是构造函数(评估'scope.$parent.deleteModeConfig(scope.analytic,scope.config)')

有人可以帮助我吗?谢谢!

没有回答,但不得不说:使用父范围不是一个很好的做法。您应该隔离范围并通过属性给出一个函数来操作该属性。如果要操作许多属性,则通过包含所有必要函数的属性传递单个对象。当你测试它时,你只是给出方法/配置对象的模拟并验证调用

答:在代码中测试它的方式是创建父范围的模拟,其中包含父范围本身的属性,该属性包含要检查的属性。

最新更新