如何测试某个 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
。