我正在使用 Vitest 1.4.0 和testing-library/react 14.2.1 实现集成测试,它呈现主应用程序组件。只需调用测试库
render()
函数,我就会收到此错误:
TypeError: Cannot use 'in' operator to search for '_leaflet_id' in null
at Util.stamp (proj/node_modules/leaflet/src/core/Util.js:55:21)
at NewClass.hasLayer (proj/node_modules/leaflet/src/layer/Layer.js:203:10)
at NewClass.getRenderer (proj/node_modules/leaflet/src/layer/vector/Renderer.getRenderer.js:20:13)
at NewClass.beforeAdd (proj/node_modules/leaflet/src/layer/vector/Path.js:80:24)
at NewClass.addLayer (proj/node_modules/leaflet/src/layer/Layer.js:169:10)
at addLayer (proj/node_modules/@react-leaflet/core/lib/layer.js:9:19)
当我在 DEV 和 PROD 模式下运行应用程序时,Leaflet 运行良好,并且有几个点向传单添加了图层,目前很难考虑复制。
我通过在初始化地图时添加以下内容来修复此错误:
const map = L.map('map', {
{...}
preferCanvas: !L.Browser.svg && !L.Browser.vml
});
Leaflet 使用画布或 SVG 渲染器。您的测试环境没有 SVG 渲染器。这告诉地图仅当不存在 SVG 渲染器时才首选画布渲染器。因此,在浏览器中运行时,这不会更改应用程序。