如何测试某个 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();
});
这导致 Jasmine 出现错误:Error: Expected a spy, but got undefined.. 然后我在 $('html') 行的 FireBug 中设置了一个断点,当我到达那里并尝试观察时$('html'),我得到的值是什么:
Object { selector="html", context=document, NaN=html, more...}
如果我注释掉spyOn,那一行$('html')的计算结果为:
[html]
这也是我期望看到的spyOn。