如何测试某个 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 对象不再可用。
Example:
假设我想测试 JQuery 选择器是否已被调用,我写道:
it('tests', function() {
spyOn($.fn, 'init').andCallThrough();
$('html');
expect($.init).toHaveBeenCalled();
});
这导致 Jasmine 出错:Error: Expected a spy, but got undefined.
。然后我在 FireBug 的 $('html') 行上设置了一个断点,当我到达那里并尝试观察时,它的值是什么$('html')
是,我得到:
Object { selector="html", context=document, NaN=html, more...}
如果我评论掉spyOn
,在那条线上$('html')
评估为:
[html]
这就是我期望看到的spyOn
以及。