`在测试中不能使用 'in' 运算符在 null 中搜索 '_leaflet_id'

问题描述 投票:0回答:1

我正在使用 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 运行良好,并且有几个点向传单添加了图层,目前很难考虑复制。

javascript testing leaflet vitest testing-library
1个回答
0
投票

我通过在初始化地图时添加以下内容来修复此错误:

const map = L.map('map', {
  {...}
  preferCanvas: !L.Browser.svg && !L.Browser.vml
});

Leaflet 使用画布或 SVG 渲染器。您的测试环境没有 SVG 渲染器。这告诉地图仅当不存在 SVG 渲染器时才首选画布渲染器。因此,在浏览器中运行时,这不会更改应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.