Как я могу проверить google.maps.Geocoder?

Как я могу проверить google.maps.Geocoder?

Здравствуй! Я пытаюсь написать «простой» тест для проверки изменения состояния компонента класса реакции. В частности, я проверяю, меняются ли состояния широты (широты) и lng (долготы), если Google успешно геокодирует некоторую строку (адрес), которую я отправляю. Вот пример того, что я хочу проверить (ie the lat and lng states being set to results[0].geometry.location.lat()) :

 getLatLong = (address) ={amp}gt; { const that = this; var geo = new google.maps.Geocoder; geo.geocode({'address':address},(results, status) ={amp}gt; { if (status == google.maps.GeocoderStatus.OK) { that.setState( { center: { lat: results[0].geometry.location.lat(), lng: results[0].geometry.location.lng(), }, }); } }); } 

В моем наборе шуток у меня возникают проблемы при написании теста и шпионаже / издевательстве над google.maps.Geocoder, потому что библиотека Google никогда не импортируется. Он прикрепляется через скрипт, например так:

 {amp}lt;script async defer src={amp}lt;%="https://maps.googleapis.com/maps/api/js?key=#{Rails.application.config.google_api_key}{amp}amp;callback=initMap"%{amp}gt;{amp}gt; {amp}lt;/script{amp}gt; 

Это подтверждается тем, что после ручного тестирования код работает как задумано, но я получаю ошибки в моем наборе тестов при попытке шпионить следующим образом:

 let geocoderSpy = jest.spyOn(google.maps, 'Geocoder'); 

Я получаю ошибку, как это:

  ● EventMap › getLatLong works as intended by getting coordinates of valid locations › calls the geocoder function ReferenceError: google is not defined 34 | let geocoder; 35 | beforeEach(() ={amp}gt; { {amp}gt; 36 | let geocoderSpy = jest.spyOn(google.maps, 'Geocoder'); | ^ 37 | geocoder = jest.createSpy('Geocoder', ['geocode']); 38 | geocoderSpy.and.returnValue(geocoder); 39 | }); at Object.google (app/javascript/__tests__/EventPage/EventMap.test.jsx:36:42) 

Итак, я продолжил эту проблему и обнаружил этот пост stackoverflow и этот ответ, который утверждал, что решил эту проблему, добавив что-то вроде jest в файл package.json …

 "globals": { "google": { } } 

Это также не решило мою проблему. Я думаю, что решение состоит в том, чтобы каким-то образом выяснить, как импортировать Google, но не совсем уверен, как это сделать …. Если кто-нибудь может мне помочь, это было бы очень признательно. Я хотел бы научиться тестировать что-то подобное. Заранее большое спасибо. Остин

Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector