Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/reporting-services/3.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
Jestjs 修复react传单测试错误:无法读取属性'_分层';空的_Jestjs_React Leaflet - Fatal编程技术网

Jestjs 修复react传单测试错误:无法读取属性'_分层';空的

Jestjs 修复react传单测试错误:无法读取属性'_分层';空的,jestjs,react-leaflet,Jestjs,React Leaflet,我对CreateReact应用程序中的基本渲染测试和react手册中的Polyline组件有一些问题。每当我尝试将多段线作为子对象添加到我的映射,我都会收到测试错误消息:TypeError:cannotread属性'\u layerAdd'为null。贴图和多段线仍然可以在浏览器中正常显示,但是这个测试错误变得有点烦人 有人面临过同样的问题吗?如果是,你是如何解决的 我见过一些类似的问题被问到,但在使用react传单时还没有真正的答案。我尝试将地图渲染绑定到组件didmount,但没有成功 以下

我对CreateReact应用程序中的基本渲染测试和react手册中的
Polyline
组件有一些问题。每当我尝试将
多段线
作为子对象添加到我的
映射
,我都会收到测试错误消息:
TypeError:cannotread属性'\u layerAdd'为null
。贴图和多段线仍然可以在浏览器中正常显示,但是这个测试错误变得有点烦人

有人面临过同样的问题吗?如果是,你是如何解决的

我见过一些类似的问题被问到,但在使用react传单时还没有真正的答案。我尝试将地图渲染绑定到
组件didmount
,但没有成功

以下是我的地图渲染:

render() {
    return (
      <Map
        animate={this.state.animate}
        center={this.state.latlng}
        length={4}
        onClick={this.handleClick}
        zoom={13}
      >
        <TileLayer
          attribution='&amp;copy <a href="http://osm.org/copyright">OpenStreetMap</a> contributors'
          url="https://{s}.tile.openstreetmap.se/hydda/full/{z}/{x}/{y}.png"
        />
        <Marker position={pathPoints[0]} />
        <Marker position={pathPoints[pathPoints.length - 1]} />
        <Polyline color="red" positions={pathPoints} />
      </Map>
    );
  }
}

render(){
返回(
);
}
}

谢谢

事实上,它与
反应传单
库无关。传单使用(默认情况下)但随Create React App的test runner提供,不完全支持SVG(特别是
createSVGRect
)。这就是发生指定错误的基本原因

如何配置Create React应用程序以通过测试?

它需要考虑作为一种变通方法,但其思想是通过将
createSVGRect
作为空函数引入来扩展JSDOM
SVGSVGElement
。该技术将允许在JSDOM中模拟SVG支持,以便通过向量覆盖(如多边形)的Jest测试

src
目录下创建名为
setupTests.js的文件,并提供以下代码:

var createElementNSOrig = global.document.createElementNS
global.document.createElementNS = function(namespaceURI, qualifiedName) {
  if (namespaceURI==='http://www.w3.org/2000/svg' && qualifiedName==='svg'){
    var element = createElementNSOrig.apply(this,arguments)
    element.createSVGRect = function(){}; 
    return element;
  }
  return createElementNSOrig.apply(this,arguments)
}