使用Jest时如何访问外部javascript方法/对象?
我目前正在使用JEST和jasmine来测试我的reactJs应用程序。有一个javascript文件托管在不同的供应商站点上,我需要访问该外部js文件中的方法/对象 注意:应用程序在页面加载时加载这个外部js,我可以访问应用程序中的所有方法 此处提供了对象和方法:使用Jest时如何访问外部javascript方法/对象?,javascript,reactjs,jasmine,jestjs,Javascript,Reactjs,Jasmine,Jestjs,我目前正在使用JEST和jasmine来测试我的reactJs应用程序。有一个javascript文件托管在不同的供应商站点上,我需要访问该外部js文件中的方法/对象 注意:应用程序在页面加载时加载这个外部js,我可以访问应用程序中的所有方法 此处提供了对象和方法: http://domain/scripts/vendor1/emd.js 我试图访问一个对象(bbo),加载必要的细节和 推它,但我不知道如何进入 示例函数: function pushEvent(obj){ bbo.setVa
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上调用的东西,您必须监视它
当通过在页面中加载外部文件在应用程序的全局名称空间中提供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();
});
使用jsdom.env
导入外部脚本,尽管我不知道为什么不需要依赖项。