gpt4 book ai didi

unit-testing - 将模拟 DOM 事件传递给没有 jQuery 的指令处理程序

转载 作者:行者123 更新时间:2023-12-03 21:46:04 25 4
gpt4 key购买 nike

我有一个非常简单的指令,其目的只是取消 dragstart事件:

link: function(scope, element) {
element.on('dragstart', function(e) {
e.preventDefault();
})
}

我如何在 Jasmine 测试中测试这个?我有以下测试试图监视 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. .我如何测试这个(/重构指令以使其可测试)?

编辑:理想情况下不包括 jQuery。
编辑:更改标签

最佳答案

您可以包含 jquery 并创建一个 jquery 事件对象。这个对象可以很容易地传递:

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

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

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

关于unit-testing - 将模拟 DOM 事件传递给没有 jQuery 的指令处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20967037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com