gpt4 book ai didi

javascript - 使用 Jest 时如何访问外部 javascript 方法/对象?

转载 作者:太空宇宙 更新时间:2023-11-04 15:51:36 27 4
gpt4 key购买 nike

我目前正在使用 JEST 并使用 jasmine 来测试我的 ReactJs 应用程序。有一个 javascript 文件托管在不同的 vendor 站点上,我需要访问该外部 js 文件中的方法/对象。

注意:应用程序在页面加载时加载此外部 js,并且我可以访问应用程序中的所有方法。

对象和方法可在此处获得:

http://domain/scripts/vendor1/emd.js

我正在尝试访问一个对象(bbo),加载必要的详细信息并推它但我不知道如何访问

示例函数:

function pushEvent(obj){
bbo.setVar( obj.param1,obj.value1);
bbo.setVar(obj.param2,obj.value2);
bbo.pushEvent(eventAction,eventParameters.eventCode,eventParameters);
}

示例测试:

 it("should call customLinkClick function",() => {
reporting.pushEvent(obj);
expect(reporting.pushEvent).toHaveBeenCalled();
});

我可以下载 JS 并使其可在本地进行测试,但我试图避免这种情况。

最佳答案

要测试 bbo.pushEvent 上是否调用了某些内容,您必须监视它。

当通过在页面中加载外部文件来在应用程序的全局 namespace 中使用 bbo 时,您必须在测试中自行创建该对象。

global.bbo = {
setVar: jest.fn(),
pushEvent: jest.fn()
}
it("should call customLinkClick function", () = > {
reporting.pushEvent(obj);
expect(global.bbo.pushEvent).toHaveBeenCalled();
});

如果您将 bbo 导入到您的模块中,那么您必须模拟它:

import bbo from 'bbo'
jest.mock('bbo', () = > ({
setVar: jest.fn(),
pushEvent: jest.fn()
}))
it("should call customLinkClick function", () = > {
reporting.pushEvent(obj);
expect(bbo.pushEvent).toHaveBeenCalled();
});

关于javascript - 使用 Jest 时如何访问外部 javascript 方法/对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43058197/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com