栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在AngularJS的指令测试中触发ng

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在AngularJS的指令测试中触发ng

根据您的解释性意见:

我在指令的测试中要做的只是检查

doIt
用户更改输入时调用了该指令。

指示符

ng-change
是否正确评估是
ngModel
指示符的责任,因此,我不确定是否可以通过这种方式对其进行测试;相反,我相信
ngModel
and
ngChange
指令已正确实现并经过测试可以调用指定的函数,并且只需测试调用函数本身以正确的方式影响指令即可。可以使用端到端或集成测试来处理整个使用场景。

也就是说,您可以掌握

ngModelController
驱动
ngModel
变更回调的实例并自行设置视图值:

it('trigger doIt', function() {  var ngModelController = el.find('input').controller('ngModel');  ngModelController.$setViewValue('test');  expect($scope.youDidIt).toBe(true);});

但是,正如我所说,我觉得这已经太过

ngModel
分担责任了,打破了自然可组合指令所带来的黑匣子。

示例:http://plnkr.co/edit/BaWpxLuMh3HvivPUbrsd?p
= preview


[更新]

浏览AngularJS源代码后,我发现以下内容也适用:

it('trigger doIt', function() {  el.find('input').trigger('input');  expect($scope.youDidIt).toBe(true);});

看起来某些浏览器中的事件有所不同;

input
似乎适用于Chrome。

示例:http://plnkr.co/edit/rbZ5OnBtKMzdpmPkmn2B?p
= preview

以下是相关的AngularJS代码,该代码使用

$sniffer
服务确定要触发的事件:

changeInputValueTo = function(value) {  inputElm.val(value);  browserTrigger(inputElm, $sniffer.hasEvent('input') ? 'input' : 'change');};

即使有了这个,我也不确定我是否会以此方式测试指令。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/382064.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号