Я понимаю, что этот вопрос старый, но у меня была аналогичная проблема и я нашел решение.
Я попробовал один из предложенных выше.
var spy = sinon.spy($("body"), "append");
моя версия:
var spy = sinon.spy($("#id"), "function");
Однако это не сработало, и мне потребовалось некоторое время, чтобы выяснить, почему. Оказывается, вам нужно получить доступ к массиву после объекта jQuery.
Как это:
var spy = sinon.spy($("#id")[0], "function");
Sinon ничего не делать с самим объектом JQuery, поскольку он может содержать несколько значений, и он не знает, что вы хотите (даже если есть только один) ,
PS: Я заметил, что это не работает для все функции jquery. Для меня это работало для «фокуса». PPS: Возможно, это не относится к данному вопросу. Но то, что я пытаюсь сделать, это инициировать фокусное событие в карма-бегуне.Пока что я был неуспешен (событие click действительно работает). Для этого я поставил вопрос о StackOverflow.
Я переместил часть этого вопроса на новый, надеюсь, более ясный вопрос - благодаря всем тем, кто пытался мне помочь. Пожалуйста, смотрите: http://stackoverflow.com/questions/17787893/any-better-way-than-setimeout-to-wait-for-asnyc-callbacks-when-testing-javascript – davy