如何在 AngularJS 单元测试中模拟 'keypress' 或 'keydown' 之类的事件?
How to mock an event like 'keypress' or 'keydown' in an AngularJS unit test?
我看过以前的文章,但它们似乎更新了,我碰壁了。谁能帮我找到解决办法?
我有一个包含一些事件的指令 bind
。这是一个信用卡号过滤器,因此它每 4 个数字添加一个 space 以使其更易于阅读。我正在尝试通过给它输入数字 5555555555554444
来在 karma/jasmine 中对其进行测试,并期望对 5555 5555 5555 4444
的 $viewValue
的响应,但找不到触发要触发的事件。
我已经尝试了 $setViewValue
、$render()
、$digest()
,并且我已经尝试了 Whosebug 中的一些解决方案(已有一年多了),但它们似乎没有上班。
是使用jQuery的唯一解决方案吗?如果是这样,jQuery 解决方案是否仍然有效?我一直在尝试在不将 jQuery 包含到我的单元测试中的情况下执行此操作。
我正在使用的代码示例:
elem.bind('keypress', parseKeyPress);
elem.bind('keydown contextmenu', parseKeyDown);
elem.bind('cut paste', parseCutPaste);
var parseHandler= function (value) {
return value ? returnNumbersOnly(value) : '';
};
ctrl.$parsers.unshift(parseHandler);
ctrl.$formatters.unshift(parseHandler);
想法?
您应该使用 elem.trigger(...)
根据需要发出这些事件。
我看过以前的文章,但它们似乎更新了,我碰壁了。谁能帮我找到解决办法?
我有一个包含一些事件的指令 bind
。这是一个信用卡号过滤器,因此它每 4 个数字添加一个 space 以使其更易于阅读。我正在尝试通过给它输入数字 5555555555554444
来在 karma/jasmine 中对其进行测试,并期望对 5555 5555 5555 4444
的 $viewValue
的响应,但找不到触发要触发的事件。
我已经尝试了 $setViewValue
、$render()
、$digest()
,并且我已经尝试了 Whosebug 中的一些解决方案(已有一年多了),但它们似乎没有上班。
是使用jQuery的唯一解决方案吗?如果是这样,jQuery 解决方案是否仍然有效?我一直在尝试在不将 jQuery 包含到我的单元测试中的情况下执行此操作。
我正在使用的代码示例:
elem.bind('keypress', parseKeyPress);
elem.bind('keydown contextmenu', parseKeyDown);
elem.bind('cut paste', parseCutPaste);
var parseHandler= function (value) {
return value ? returnNumbersOnly(value) : '';
};
ctrl.$parsers.unshift(parseHandler);
ctrl.$formatters.unshift(parseHandler);
想法?
您应该使用 elem.trigger(...)
根据需要发出这些事件。