Angularjs单元测试不从SELECT节点建模数据
Angularjs Unit Tests not modeling data from SELECT node
我是新的angularjs和试图单元测试我的指令。实际上,我首先在一个完全工作的浏览器会话中测试了它,因为它看起来更容易,但我想进入单元测试,因为它是最佳实践。
在我的浏览器会话中,我的指令完全像我期望的那样起作用。它创建了一个<select>
标签,该标签使用ng-model
绑定到$rootScope
上的属性。
然而,当我使用Jasmine语法测试Karma时(正如Angular文档所推荐的),当我更改<select>
元素的值时,我无法获得$rootScope
上的模型更新。
这是我的Jasmine代码。这是一个代码片段,但我向您保证,下面代码中没有显式定义的变量是使用$inject()
正确定义的。我已经测试了他们,以确保他们没有搞砸:
var el = $compile("<my-directive my-model='myModel'></my-directive>")($scope);
//the 'my-model' value, 'myModel', gets assigned during the link phase to:
//$scope.$root.fields[myModel]
var $el = angular.element(el);
$el.find('select').val('someVal');
$rootScope.$digest();
expect($scope.$root.fields[myModel]).toEqual("someVal");
我得到的错误是:
Expected '' to equal 'someVal'
我做错了什么?我是否误解了$digest()
阶段?或者ng-model
是如何工作的?
好吧,我想我会回答我自己的问题,因为我在这里等待答案时发现了它。
问题是我需要调用.change()
,或者在select元素上触发change
事件。
所以我今天学到了一些重要的东西!Angular的ng-model
指令只会在事件被触发后接收变化。在测试中学习比在调试中学习好,所以我猜单元测试是有效的!
相关文章:
- 节点导出返回一个空对象
- 可以前端maven插件使用节点,npm已经安装
- 在jstree中,如何将指定的节点集中到大型树上
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何从模块链中调用函数.导出到节点中
- 节点是否需要模块传递带有方括号的arg?这是个错误吗
- d3基于用户选择动态更新节点
- 有条件更新d3.js力图中节点的最佳方法
- 如何处理node.js节点mongodb中的连接和查询队列
- 将DOM节点值与字符串Javascript进行比较
- 节点fs.stat名称未定义
- 无法安装节点sass相关性
- 节点协同与生成器和Promise并行流量控制
- 节点.js将变量显示为 HTML
- 将节点数据分配给另一个变量jstree
- 如何在动态创建的节点上绑定函数
- 承诺在非节点式回调上使用Bluebird
- 通过从节点父级获取所有子级对节点进行排序(获取子级数组)
- 对具有节点和边的简单图形进行建模
- Angularjs单元测试不从SELECT节点建模数据