【问题标题】:Karma Unit: Testing keypress with escape button业力单元:使用退出按钮测试按键
【发布时间】:2014-07-02 15:41:45
【问题描述】:

我在指令中有这样的代码:

$document.bind('keydown', function ($event) {
  if ($event && $scope.visible && $event.which === escapeKey) {
     $scope.toggle();
     $scope.$apply();
  }
});

我想测试用户单击转义开关是否会运行。目前我有这样的测试:

it('should toggle window visibility to false when keypress escape', function () {
  var doc,
      $event;

  $httpBackend.when(method, url)
              .respond(template);

  $event = {
    event: 'keydown'
  };
  directive = createDirective();
  $httpBackend.flush();
  $isolateScope = directive.isolateScope();
  $isolateScope.toggle();
  $document.triggerHandler('keydown');
});

但是我怎样才能通过那个特定的键被按下以为 triggerHandler.不想使用任何 jQuery 。有没有其他测试方法?

【问题讨论】:

  • 您可以编写一个普通的 JS 代码来触发事件,尽管请查看此答案以了解一些特定的浏览器问题:stackoverflow.com/questions/22574431/…
  • 我尝试进行测试,但我在 Phantomjs 中遇到了与其他人一样的错误,但这仍然是一个很好的提示,并会尝试遵循这一点。
  • 看看上面的链接:我刚刚更新了答案,支持 PhantomJS 和 Safari。 ;)

标签: angularjs angularjs-directive karma-runner karma-jasmine


【解决方案1】:
element.triggerHandler({type: 'keydown', which: escapeKey});

【讨论】:

  • 你好,只有一段代码在 Stack Overflow 上不被认为是一个好的答案。请考虑添加对您的答案如何工作的解释。
猜你喜欢
  • 1970-01-01
  • 2016-06-19
  • 1970-01-01
  • 2014-09-18
  • 2016-10-05
  • 1970-01-01
  • 2016-10-02
  • 2018-12-07
  • 2014-01-21
相关资源
最近更新 更多