微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单元测试 – 将模拟DOM事件传递给没有jQuery的指令处理程序

我有一个非常简单的指令,其目的只是取消dragstart事件:
link: function(scope,element) {
  element.on('dragstart',function(e) {
    e.preventDefault();
  })
}

如何在茉莉花测试中测试?我有以下测试,试图监视一个Event对象,并将其传递给处理程序:

var mockEvent; 

beforeEach(function() {
  mockEvent = new Event('dragstart');
  spyOn(mockEvent,'preventDefault');
});

it('should call preventDefault',function () {
  element.triggerHandler('dragstart',mockEvent);
  expect(mockEvent.preventDefault).toHaveBeenCalled();
});

但测试失败.你可以see this at this Plunker..我如何测试这个(/ refactor的指令,使其可测试)?

编辑:理想地不包括jQuery.
编辑:更改标签

解决方法

您可以包含jquery并创建一个jquery事件对象.这个对象很容易被传递:
beforeEach(function() {
  mockEvent = $.Event('dragstart');
  spyOn(mockEvent,function () {
  element.triggerHandler(mockEvent);
  expect(mockEvent.preventDefault).toHaveBeenCalled();
});

我在你的plunkr中使用了这个jquery版本://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js

原文地址:https://www.jb51.cc/html/225144.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐