Задать вопрос
andrufka46rus
@andrufka46rus
веб-рукожоп

Как оттестировать yandex map в Jest?

init(_mapWrapper) {
        let map = {};

        const setMapCenter = (_newCoords) => {
            map.setCenter(_newCoords);
            map.setZoom(yandexMapSettings.zoom);
        };

        const setPlaceMarks = (_placeMarks) => {
            map.geoObjects.get(0).removeAll();
            map.geoObjects.get(0).add(_placeMarks);
        };

        const setPlaceMarkObjects = (_placeMarks) => {
            const placeMarks = [];
            Iterable.each(_placeMarks, (_placeMark) => {
                placeMarks.push(computePlaceMark(_placeMark));
            });

            setPlaceMarks(placeMarks);
        };

        return new Promise((_resolve) => {
            Meta.addScript(src, () => {
                window.ymaps.ready(() => {
                    map = new window.ymaps.Map(_mapWrapper, yandexMapSettings);
                    map.geoObjects.add(new window.ymaps.Clusterer({
                        preset                        : 'islands#invertedVioletClusterIcons',
                        clusterDisableClickZoom       : true,
                        groupByCoordinates            : false,
                        clusterHideIconOnBalloonOpen  : false,
                        geoObjectHideIconOnBalloonOpen: false,
                    }));
                    _resolve(markRaw({
                        setMapCenter,
                        computePlaceMark,
                        setPlaceMarks,
                        setPlaceMarkObjects,
                    }));
                });
            });
        });
    },

addScript(_src, _callback = null) {
        let script = window.document.querySelector('script[src="' + _src + '"]');

        if (!script) {
            script     = window.document.createElement('script');
            script.src = _src;
            window.document.head.appendChild(script);
        }

        script.addEventListener('load', _callback);
    }

test('initialization', async () => {
        const mapWrapper = window.document.createElement('div');

        const yandexInterface = await YandexMap.init(window.document.body.appendChild(mapWrapper));
    });


На стороне клиента все хорошо отрабатывает. Но вот тесты... Почему то window.ymaps undefined, хотя должен устанавливаться при загрузке скрипта автоматом.

Может какие -то особенности тестирования в Jest? Может кто помочь?
  • Вопрос задан
  • 153 просмотра
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы