Я хочу следить за функцией, используемой в качестве обработчика щелчка. Функция определена внутри конструктора замыкания.Jasmine spy не работает над функцией, определенной в конструкторе
var viewModel = function(){
var viewModel = function(){
var _this = this;
_this.internalClickHandler = function(){
console.log('I handled a click');
}
}
return viewModel;
}();
var testViewModel = new viewModel();
var theSpy = spyOn(testViewModel, 'internalClickHandler');
Несмотря на то, жасмин счастлив, что 'internalClickHandler существует и создает шпиона, он никогда не будет вызван. Фактически исходная функция (internalClickHandler) получает вызов вместо этого.
Я создал examples in codepen.io, которые показывают проблему. Пробный тест - это попытка попытаться найти функцию в конструкторе.
Мой обработчик событий должен находиться в конструкторе, так как ему нужен доступ к экземпляру объекта, и я хочу проверить, что правильный обработчик был уволен не только, что был вызван событие клика.
Любая помощь будет приниматься в значительной степени. Благодаря
Спасибо за ответ, вы посоветуете мне помочь в решении и, надеюсь, тоже помогут кому-то еще. Вы правы, что вызывается функция onclick, а не функция в конструкторе. Однако ваше решение не помогает мне создать полезный тест, так как я только знаю, что обработчик onclick был обработан, но я не знал, что с ним справится. Я разместил свое решение, которое позволяет мне следить за функцией в конструкторе. – moefinley
Если вы считаете, что этот ответ помогает понять концепцию издевательств над кликом/проводниками в сторону положительного решения, вам поможет upvote. –