【问题标题】:How to mock/stub a $ JQuery call with Karma-Jasmine?如何使用 Karma-Jasmine 模拟/存根 $ JQuery 调用?
【发布时间】:2020-06-26 09:17:33
【问题描述】:

我正在使用 jQuery 在我们的页面上打开一个模式。在组件中它说:

// @ts-ignore
$('#modal').modal('show');

ts-ignore 是因为我们没有将 jQuery 导入组件(不知道它应该如何工作,但确实如此)。

这个 sn-p 在组件的某个方法中。

在UnitTesting这个方法时,我显然想避免使用jQuery来选择Modal,因为没有可用的DOM。

所以我不得不嘲笑它。但所有尝试都失败了:

// @ts-ignore
spyOn($.fn, 'modal').and.callFake(() => true);
// @ts-ignore
spyOn($('#modal'), 'modal').and.callFake(() => true);
// @ts-ignore
spyOn($, 'modal').and.callFake(() => true);

都是错误的:modal() 方法不存在。

我在这里错过了什么?

【问题讨论】:

    标签: javascript jquery angular jasmine karma-jasmine


    【解决方案1】:

    我会像这样在 Angular https://stackoverflow.com/a/40355691/7365461 中使用和导入 jQuery

    在您的spec.ts 文件中,尝试执行以下操作:

    import * as $ from 'jquery';
    ....
    spyOn(($.fn as any), 'modal').and.callFake(() => true); 
    

    【讨论】:

    • 不幸的是没有:错误::modal() 方法不存在
    猜你喜欢
    • 2017-09-04
    • 1970-01-01
    • 2013-12-20
    • 2014-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-11
    • 1970-01-01
    相关资源
    最近更新 更多