mocking和测试指令,隔离范围包含ng模型
mocking and testing directive with isolate scope containing ng-model
我有一个指令要模拟和测试。该指令的ngModel设置为双重绑定并transclude true
scope: {'ngModel': '=' }
transclude: true
我要测试的规范非常简单。
$el.find('input').prop('checked', $scope.ngModel);
在我的单元测试中,我创建了一个beforeEach,并创建了测试ngModel=checked的指令
element = angular.element("<div *directiveName* ><div><input type='"checkbox'" ngModel=checked /> </div></div>");
$rootScope = $rootScope.$new();
$compile(element)($rootScope);
$rootScope.$digest(element);
scope = element.isolateScope();
通常我会将scope设置为等于element.scope()。我会调用右边的isolateScope()方法?
我相信,由于我正在将范围设置为等于元素isolateScope(),所以规范应该像一样简单
expect(scope.ngModel).to.equal('checked');
但是,scope.ngModel未定义。我不确定在创建指令或调用测试时遗漏了什么。任何指示都将不胜感激。
您没有正确地将值传递到元素中。应该是:
element = angular.element("<div *directiveName* ><div><input type='"checkbox'" ng-model=checked /> </div></div>");
变化是ng模型而不是ngModel。
我还建议在指令中为自定义属性使用不同的名称,因为这与内置的angular指令混淆。
相关文章:
- 如何访问嵌套的表单ng包含范围/字段
- 搜索包含包含所需值的范围的数组
- 如果指令包含在另一个指令中,我如何在隔离范围内添加双向数据绑定属性
- 获取范围中包含的HTML元素
- mocking和测试指令,隔离范围包含ng模型
- 正则表达式以匹配 HTML 范围标记中包含的多个单词
- OpenLayers 3 创建包含几个点的边界范围
- 当范围不包含任何内容时隐藏父项
- 角度模型放宽了指令中包含ng的范围
- 如何在包含日期范围的数组中填充日期
- 如何在js中验证字符串只包含来自多个unicode范围的字符
- 包含函数的对象文字表示法的执行速度是否比(全局范围)普通函数(取消引用)更快
- 日期范围是否包含两个特定日期
- 我如何将包含$(this)的函数应用于选择器的范围
- 将包含的JS函数分配给AngularJS范围
- Angular:在控制器中渲染包含范围变量的外部化字符串
- 将日期范围转换为包含所有日期的数组
- 包含在 jquery 选择器中的 Rangy 范围
- angularJS中ng包含的范围丢失
- 如果内联样式包含颜色,则将类应用于范围