大佬教程收集整理的这篇文章主要介绍了单元测试 – 测试AngularJS范围变量,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
it('should switch on array changes',inject(function($rootScope,$compilE) { element = $compile( '<div ng-switch="SELEct">' + '<div ng-switch-when="test[0]">test[0]:{{test[0]}}</div>' + '</div>')($rootScopE); expect(element.html()).toEqual('<!-- ngSwitchWhen: test[0] -->'); $rootScope.test = ["Leog"]; $rootScope.SELEct = "Leog"; $rootScope.$apply(); expect(element.text()).toEqual('test[0]:Leog'); }));
我的问题是,我为此工作的实现没有得到范围变量“test”来评估和工作,因为我期望.这是实施:
var ngSwitchWhenDirective = ngDirective({ transclude: 'element',priority: 800,require: '^ngSwitch',compile: function(element,attrs) { return function(scope,element,attr,ctrl,$transcludE) { var expr = scope.$eval(attrs.ngSwitchWhen),ngSwitchWhen = expr !== undefined ? expr : attrs.ngSwitchWhen; ctrl.cases['!' + ngSwitchWhen] = (ctrl.cases['!' + ngSwitchWhen] || []); ctrl.cases['!' + ngSwitchWhen].push({ transclude: $transclude,element: element }); }; } });
有谁知道我做错了什么?任何帮助将不胜感激.
提前致谢!
只是为了澄清,这是一个如何从Angular团队测试ng-switch的例子.只是为了表明我正在以类似的方式进行测试,但没有达到预期的结果.
而且,我忘了将我的代码转换为$rootScope,你到目前为止看到的是我尝试创建一个新范围以避免依赖$rootScope进行更改.
it('should switch on value change',$compilE) { element = $compile( '<div ng-switch="SELEct">' + '<div ng-switch-when="1">first:{{name}}</div>' + '<div ng-switch-when="2">second:{{name}}</div>' + '<div ng-switch-when="true">true:{{name}}</div>' + '</div>')($rootScopE); expect(element.html()).toEqual( '<!-- ngSwitchWhen: 1 --><!-- ngSwitchWhen: 2 --><!-- ngSwitchWhen: true -->'); $rootScope.SELEct = 1; $rootScope.$apply(); expect(element.text()).toEqual('first:'); $rootScope.name="shyam"; $rootScope.$apply(); expect(element.text()).toEqual('first:shyam'); $rootScope.SELEct = 2; $rootScope.$apply(); expect(element.text()).toEqual('second:shyam'); $rootScope.name = 'misko'; $rootScope.$apply(); expect(element.text()).toEqual('second:misko'); $rootScope.SELEct = true; $rootScope.$apply(); expect(element.text()).toEqual('true:misko'); }));
以下是包含其他测试用例的工作代码:
it('should evaluate expressions to match switch value',$compilE) { $rootScope.array = ["Leog",".me"]; $rootScope.obj = {"key": "value"}; $rootScope.$apply(); element = $compile( '<div ng-switch="SELEct">' + '<div ng-switch-when="obj.key">obj.key:{{obj.key}}</div>' + '<div ng-switch-when="array[0]">array[0]:{{array[0]}}</div>' + '<div ng-switch-when="arraY[1]">arraY[1]:{{arraY[1]}}</div>' + '</div>')($rootScopE); expect(element.html()).toEqual('<!-- ngSwitchWhen: obj.key -->' + '<!-- ngSwitchWhen: array[0] -->' + '<!-- ngSwitchWhen: arraY[1] -->'); $rootScope.SELEct = "value1"; $rootScope.$apply(); expect(element.text()).toEqual('obj.key:value'); $rootScope.SELEct = "Leog"; $rootScope.$apply(); expect(element.text()).toEqual('array[0]:Leog'); $rootScope.SELEct = ".me"; $rootScope.$apply(); expect(element.text()).toEqual('arraY[1]:.me'); }));
谢谢大家.
以上是大佬教程为你收集整理的单元测试 – 测试AngularJS范围变量全部内容,希望文章能够帮你解决单元测试 – 测试AngularJS范围变量所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。