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

前端之家收集整理的这篇文章主要介绍了单元测试 – 将模拟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

猜你在找的HTML相关文章