加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 使用Karma和Jasmine测试Angular JS中的父控制器范

发布时间:2020-12-17 10:20:57 所属栏目:安全 来源:网络整理
导读:我在页面上有两个控制器.它们被“包裹”在 HTML标记上,其中一个是“父”,另一个是“子”,如下所示: div id="parent" ng-controller="parentController" div id="child" ng-controller=childController" /div/div 在我的控制器的JS文件中,我从“子”控制器中
我在页面上有两个控制器.它们被“包裹”在 HTML标记上,其中一个是“父”,另一个是“子”,如下所示:
<div id="parent" ng-controller="parentController">
    <div id="child" ng-controller=childController">
    </div>
</div>

在我的控制器的JS文件中,我从“子”控制器中的“父”控制器引用一个对象.

家长控制器:

angular.module('myApp').controller('parentController',function($scope){
    $scope.myReferencedObject = {};
    $scope.myReferencedObject.someProperty = "hello world";
});

儿童控制器:

angular.module('myApp').controller('childController',function($scope){
    $scope.childControllerVariable = $scope.myReferencedObject.someProperty;
});

因为“子”控制器嵌套在“父”控制器中,所以来自父控制器的对象在子控制器中继承.

这在Karma测试中不起作用,因为所有文件都被分解为单独的单元并单独测试.在进行单元测试时,$scope.myReferencedObject.someProperty引用在我的“子”控制器中是未定义的,因为没有原型继承.

我如何在Karma中解决这个问题?

您可以在测试内部控制器时将$scope初始化为您想要的任何内容,这样您就可以模拟父控制器在其上设置的内容
var controllerInstance;
beforeEach(inject(function ($controller,$rootScope) {
    scope = $rootScope.$new();
    scope.myReferencedObject = {someProperty: 'hello world'}
    controllerInstance = $controller('childController',{
      $scope: scope
    });
}));

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读