我有一个非常简单的指令,其目的只是取消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事件对象.这个对象很容易被传递:
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