Я использую mapbox-gl, в частности mapbox-gl-leaflet, в React для создания карты:
import Leaflet from 'leaflet'
import 'mapbox-gl/dist/mapbox-gl.css'
import {} from 'mapbox-gl-leaflet'
import 'leaflet/dist/leaflet.css'
const Map = () => {
const map = useRef(null)
useEffect(() => {
Leaflet.mapboxGL({
accessToken: token,
style: 'mapbox://styles/mapbox/outdoors-v11',
}).addTo(map.current)
})
}
В тесте уже происходит сбой, когда я пытаюсь смонтировать <Map />
с этой ошибкой:
Не удалось инициализировать WebGL.
Есть также два других сообщения об ошибке:
Ошибка: Не реализовано: HTMLCanvasElement.prototype.getContext (без установки пакета canvas npm)...
На этой странице отсутствуют объявления CSS для Mapbox GL JS, что может привести к неправильному отображению карты. Убедитесь, что ваша страница включает mapbox-gl.css, как описано в https://www.mapbox.com/mapbox-gl-js/api/.
Но, как видите, я импортирую файл CSS. Я думаю, проблема в том, что в Jest нет WebGL. Я также установил пакет canvas
npm, но это не помогло. Можно ли как-то имитировать WebGL? Я уже пробовал это с помощью jest- макет холста. Импортирую его в тестовый файл: import {} from 'jest-canvas-mock'
. Но я все еще получаю ошибку Error: Not implemented: HTMLCanvasElement.prototype.getContext ...
.