angularjs - How do I call triggerHandler with a specific fake 'event' parameter? -
i'm trying test on link click 'preventdefault' called. however, have difficulties replace real 'event' object 1 can spy on:
here how trigger click event:
var e = jasmine.createspyobj('e', [ 'preventdefault' ]); $element.triggerhandler('click', [e]); however, when directive code being run, event element not replaced fake one:
$element.on('click', function(event) { console.log(event); } i tried different ways of adding second parameter triggerhandler - array, object, line, etc. neither worked.. not many examples of triggerhandler additional parameters, feel little bit lost...
thanks in advance!
the docs triggerhandler() passes dummy object handler: http://docs.angularjs.org/api/ng/function/angular.element
if check source, can see triggerhandler() creates own event object, , passes second argument event data, not actual event object:
https://github.com/angular/angular.js/blob/master/src/jqlite.js#l882
relevant code:
var event = [{ preventdefault: noop, stoppropagation: noop }]; foreach(eventfns, function(fn) { fn.apply(element, event.concat(eventdata)); }); i've used jquery's internal event simulator creating own events. may work you: http://wingkaiwan.com/2012/09/23/triggering-mouse-events-with-jquery-simulate-when-testing-in-javascript/
Comments
Post a Comment