reactjs Enzyme和GoogleMapCDN

vxf3dgd4  于 2023-04-05  发布在  React
关注(0)|答案(1)|浏览(62)

我试图测试与酶的一个组件,这是使用谷歌Map的CDN,你可以看到下面:

/* global google */
import React from 'react';

class GoogleMap extends React.Component {
  componentDidMount() {
    /* eslint-disable no-new */
    new google.maps.Map(this.map, {
      center: { lat: 45.772141, lng: 4.874891 },
      zoom: 16,
    });
  }

  render() {
    return (
      <div
        ref={(c) => { this.map = c; }}
        style={{ width: 500, height: 300 }}
      >I should be a map!
      </div>
    );
  }
}

export default GoogleMap;

正如我所料,下面的测试:

describe('GoogleMap', () => {
  it('should be defined', () => {
    expect(GoogleMap).toBeDefined();
  });

  it('should render correctly', () => {
    const wrapper = shallow(<GoogleMap />);
    expect(wrapper).toMatchSnapshot();
  });
});

我得到了这个错误:

TypeError: Cannot read property 'Map' of undefined

       5 |   componentDidMount() {
       6 |     /* eslint-disable no-new */
    >  7 |     new google.maps.Map(this.map, {
       8 |       center: { lat: 45.772141, lng: 4.874891 },
       9 |       zoom: 16,
      10 |     });

任何人都可以帮助我做修复这个错误?或者我逃避GoogleMap测试?更一般地说,我们可以用酶测试一些CDN?

b4lqfgs4

b4lqfgs41#

@或者B谢谢你,我搜索了第三方库,我发现了一个关于谷歌未定义的issue,我以前没有找到。
下面的代码没有模仿第三个库,但是,我想如果我理解了,声明一个新的空类,它将允许不抛出错误。

//setupTests.js
google = {
  maps: {
    Map: class {}
  }
};

相关问题