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