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

Popular posts from this blog

get url and add instance to a model with prefilled foreign key :django admin -

android - Keyboard hides my half of edit-text and button below it even in scroll view -

css - Make div keyboard-scrollable in jQuery Mobile? -