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

前端之家收集整理的这篇文章主要介绍了angularjs – 使用Karma和Jasmine测试Angular JS中的父控制器范围变量前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在页面上有两个控制器.它们被“包裹”在 HTML标记上,其中一个是“父”,另一个是“子”,如下所示: @H_301_1@<div id="parent" ng-controller="parentController"> <div id="child" ng-controller=childController"> </div> </div>

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

家长控制器:

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

儿童控制器:

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

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

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

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

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

猜你在找的Angularjs相关文章