Skip to content

Instantly share code, notes, and snippets.

@laser
Created March 25, 2012 16:52
Show Gist options
  • Save laser/2198227 to your computer and use it in GitHub Desktop.
Save laser/2198227 to your computer and use it in GitHub Desktop.
Sinon.js mocked object not acknowledging calls to methods if invoked directly as callbacks of jQuery.delegate
test("Handler is invoked as callback from jQuery delegate method directly...", function() {
var Controller,
View,
$el,
c,
v,
mock;
Controller = function() {
var self = {};
self.handler = function(e) {
console.log("got handled");
};
return self;
};
View = function($el, controller) {
var self = {};
self.render = function() {
$el.html("<input name=\"derp\" type=\"text\" id=\"derp\"/>");
$el.delegate("#derp", "keyup", controller.handler);
};
return self;
};
$el = jQuery("<div></div>");
c = new Controller();
v = new View($el, c);
mock = this.mock(c);
v.render();
mock.expects("handler").once();
$el.find("input").val("bar").trigger("keyup");
equal($el.find("input").val(), "bar"); // passes!
mock.verify();
});
test("Handler is invoked inside anonymous function...", function() {
var Controller,
View,
$el,
c,
v,
mock;
Controller = function() {
var self = {};
self.handler = function(e) {
console.log("got handled");
};
return self;
};
View = function($el, controller) {
var self = {};
self.render = function() {
$el.html("<input name=\"derp\" type=\"text\" id=\"derp\"/>");
$el.delegate("#derp", "keyup", function(e) {
controller.handler(e);
});
};
return self;
};
$el = jQuery("<div></div>");
c = new Controller();
v = new View($el, c);
mock = this.mock(c);
v.render();
mock.expects("handler").once();
$el.find("input").val("bar").trigger("keyup");
equal($el.find("input").val(), "bar"); // passes!
mock.verify();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment