Estoy escribiendo un simple controlador de clic y necesitan el evento pasado en (al igual que)¿Cómo afirmar un espía se invoca con evento al hacer clic con jazmín?
Thing = function($){
var MyObject = function(opts){
this.opts = opts;
};
MyObject.prototype.createSomething = function(){
var that = this;
$('#some_dom_element').live('click', function(e) {
that.doStuff(e);
});
};
MyObject.prototype.doStuff = function(e) {
//do some javascript stuff ...
e.preventDefault();
};
return MyObject;
}(jQuery);
Actualmente en mi especificación jazmín Tengo algo para espiar a la función espero que se invoca (pero ya que es llamada con e -no sin args- mi afirmación está fallando)
it ("live click handler added to the dom element", function(){
var doSpy = spyOn(sut, 'doStuff');
sut.createSomething();
$("#some_dom_element").trigger('click');
expect(doSpy).toHaveBeenCalledWith();
});
¿Cómo puedo corregir este "toHaveBeenCalledWith" trabajar como esperaba?
ACTUALIZACIÓN
no pude conseguir la respuesta aceptada para trabajar como es, pero yo era capaz de alterar sólo un poco, y el siguiente es mi 100% ejemplo de trabajo
it ("should prevent default on click", function(){
var event = {
type: 'click',
preventDefault: function() {}
};
var preventDefaultSpy = spyOn(event, 'preventDefault');
sut.createSomething();
$("#some_dom_element").trigger(event);
expect(preventDefaultSpy).toHaveBeenCalledWith();
});