reactjs - 在 React 中测试 mapbox-gl 时如何修复 'window.URL.createObjectURL is not a function'?

标签 reactjs unit-testing enzyme mapbox-gl-js

我正在使用 Mapbox、material-ui 和自定义样式测试 React 组件。我使用 Jest + Enzyme 进行测试。

我有问题:“window.URL.createObjectURL 不是函数”。我读过类似的问题:
github.com/uber/react-map-gl/issues/210
github.com/mapbox/mapbox-gl-js/issues/3436
github.com/mapbox/mapbox-gl-js-mock

并试图添加一些东西但没有成功。请解决问题。

CodeSandbox

最佳答案

我的 Jest 测试套件遇到了完全相同的问题。经过一些试验和搜索,我能够模拟 createObjectURL方法。

jest.stub.js文件,我把这个配置:

if (typeof window.URL.createObjectURL === 'undefined') {
  window.URL.createObjectURL = () => {
    // Do nothing
    // Mock this function for mapbox-gl to work
  };
}

然后,在 jest.config.js文件,我添加了对 stub 文件的引用

  setupFiles: [
    '<rootDir>/tests/jest.stub.js',
  ],

注意:确保在 setupFile 定义中获得正确的路径。

关于reactjs - 在 React 中测试 mapbox-gl 时如何修复 'window.URL.createObjectURL is not a function'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57943736/

相关文章:

unit-testing - 当组件是无状态功能时,使用 Enzyme 按显示名称查找组件

unit-testing - 如何测试 protected 方法?

PHPUnit:在 <ClassNameTest>.php 中找不到类 <ClassName>

reactjs - 三元运算符用 Jest 测试用例

unit-testing - 我应该从 JEST 跟踪 'snapshots' 吗?

meteor - React SSR - 处理 window.height/width

javascript - 修改传奇中的组件特定状态(未在redux存储上注册)

javascript - 使用键盘上的 Esc 键关闭模式弹出窗口

reactjs - 使用 React 和 Bootstrap 的响应式导航菜单 - 汉堡包不起作用

reactjs - 用 enzyme 测试时如何等待componentDidMount中的setState解决?