Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Jest时如何访问外部javascript方法/对象?_Javascript_Reactjs_Jasmine_Jestjs - Fatal编程技术网

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

使用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

我目前正在使用JEST和jasmine来测试我的reactJs应用程序。有一个javascript文件托管在不同的供应商站点上,我需要访问该外部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上调用的东西,您必须监视它

当通过在页面中加载外部文件在应用程序的全局名称空间中提供
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
导入外部脚本,尽管我不知道为什么不需要依赖项。