Как я могу проверить, что определенный селектор JQuery был выполнен с Jasmine? Я пытаюсь сделать следующее:
spyOn($.fn, 'init').andCallThrough();
// my code
expect($.init).toHaveBeenCalled();
Но после этого вызова $('div')
возвращает Object { selector="div", context=document, NaN=div.spec, more...}
, хотя он должен вернуть (а $.fn.init('div')
возвращает его): [div.jasmine_reporter, div.banner, div.logo, 4 more...]
. Этот материал естественным образом нарушает код, поскольку объект JQuery больше не может использоваться.
Пример:
Скажем, я хочу проверить, что был вызван селектор JQuery, я пишу:
it('tests', function() {
spyOn($.fn, 'init').andCallThrough();
$('html');
expect($.init).toHaveBeenCalled();
});
Этот результат - ошибка от Жасмин: Error: Expected a spy, but got undefined.
. Затем я устанавливаю точку останова в FireBug на строке $ ('html') и, когда попадаю туда и пытаюсь посмотреть, каково значение $('html')
, получаю:
Object { selector="html", context=document, NaN=html, more...}
Если я закомментирую spyOn
, в этой строке $('html')
будет иметь значение:
[html]
Что я и ожидал увидеть с spyOn
.