如何在AngularJS单元测试中模拟像'keypress'或'keydown'这样的事件?

时间:2015-01-20 01:29:51

标签: javascript angularjs unit-testing karma-jasmine

我看过以前的文章,但它们似乎已经更新了,而且我已经碰到了一堵砖墙。任何人都可以帮我找到解决方案吗?

我的指令有一些事件bind。它是一个信用卡号码过滤器,因此它每4个数字添加一个空格,以便于阅读。我试图在karma / jasmine中测试它,通过输入数字5555555555554444,并期望$viewValue 5555 5555 5555 4444的响应,但无法找到触发事件的方法火。

我已经尝试了$setViewValue$render()$digest(),我尝试了StackOverflow的一些解决方案(超过一年),但它们似乎无法正常工作

是使用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);

思想?

1 个答案:

答案 0 :(得分:1)

您应该使用elem.trigger(...)根据需要发出这些事件。