【问题标题】:How to check if jQuery, $ is called with a specific selector in Jasmine?如何检查是否使用 Jasmine 中的特定选择器调用了 jQuery、$?
【发布时间】:2021-04-27 04:48:48
【问题描述】:

我的代码:

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

我可以测试是否已使用 'string1' 调用了 val

spyOn($.fn, 'val');

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

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

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

【问题讨论】:

    标签: javascript jquery unit-testing jasmine


    【解决方案1】:

    查看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

    【讨论】:

    • 非常感谢。这行得通。它抛出了一个错误。但我只需要添加 undefined 和 jasmine.anything() 作为额外的 2 个参数。 错误:预期的 spy init 已被调用:['#test1'],但实际调用为:['#test1', undefined, ({ 0: HTMLNode, context: HTMLNode,长度:1 }) ]
    • 我进行了相应的编辑;)你能接受答案吗(绿色复选标记)?
    猜你喜欢
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-06
    • 2013-03-17
    • 2011-01-13
    • 2017-06-11
    相关资源
    最近更新 更多