Если вы определяете свою функцию:
function test() {};
Тогда это эквивалентно:
window.test = function() {} /* (in the browser) */
Так что spyOn(window, 'test')
должно работать.
Если этонет, вы также должны быть в состоянии:
test = jasmine.createSpy();
Если ни один из них не работает, что-то еще происходит с вашей настройкой.
Я не думаю, что ваш fakeElement
Техника работает из-за того, что происходит за кулисами.Оригинальный globalMethod по-прежнему указывает на тот же код.Шпионаж - это прокси, но только в контексте объекта.Если вы можете заставить свой тестовый код вызывать через fakeElement, он будет работать, но тогда вы сможете отказаться от глобальных fns.