如何检查 Jasmine 中是否使用特定选择器调用了 jQuery, $?

How to check if jQuery, $ is called with a specific selector in Jasmine?

我的代码:

$('#test1').val('string1');

我可以测试 val 是否被调用 'string1'.

spyOn($.fn, 'val');

expect($.fn.val).toHaveBeenCalledWith('string1');

但我想测试 $ 是否已使用特定选择器调用。我希望能够做到这一点。

expect($.fn).toHaveBeenCalledWith('#test1');

查看jQuery脚本(3.5.1版本),发现处理选择器的函数是$.fn.init

 jQuery.fn.init = function( selector, context, root ) {...}

第 3133 行。

所以你的 Jasmine expect 将是:

expect($.fn.init).toHaveBeenCalledWith('#test1', undefined, jasmine.anything());

您可以忽略一些参数。 Reference