Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Manually mock Google Maps in Jest

I want to mock the google maps API that I am using with the @googlemaps/js-api-loader package.

For now, I need to ensure that the geocoder was called and I am trying to do so by:

const mockGeocoder = jest.fn();

jest.mock('google.maps.Geocoder', () => () => ({
  geocoder: mockGeocoder,
}));

But I get

Cannot find module 'google.maps.Geocoder' from 'tests/unit/usecases/maps/getPlaceByAddress.spec.ts'

  3 | const mockGeocoder = jest.fn();
  4 |
> 5 | jest.mock('google.maps.Geocoder', () => () => ({

Not sure how to proceed. Can anyone help me with this?

like image 625
Eduardo Sousa Avatar asked Dec 19 '25 21:12

Eduardo Sousa


2 Answers

I did the following:

const setupGoogleMock = () => {
  global.window.google = {
    maps: {
      Geocoder: jest.fn(() => ({
        geocode: mockGeocoder,
      })),
      GeocoderStatus: {
        ERROR: 'ERROR',
        INVALID_REQUEST: 'INVALID_REQUEST',
        OK: 'OK',
        OVER_QUERY_LIMIT: 'OVER_QUERY_LIMIT',
        REQUEST_DENIED: 'REQUEST_DENIED',
        UNKNOWN_ERROR: 'UNKNOWN_ERROR',
        ZERO_RESULTS: 'ZERO_RESULTS',
      },
    } as any,
  };
};

and then

beforeAll(() => {
  setupGoogleMock();
});

This is where I found the answer.

like image 69
Eduardo Sousa Avatar answered Dec 22 '25 11:12

Eduardo Sousa


Check the package https://www.npmjs.com/package/@googlemaps/jest-mocks for mocks and examples. I'm not sure if Geocoder has a mock, but it should be possible to follow the pattern there (and send a pr).

like image 31
jpoehnelt Avatar answered Dec 22 '25 10:12

jpoehnelt



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!