Reputation: 1075
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?
Upvotes: 3
Views: 10127
Reputation: 1075
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.
Upvotes: 3
Reputation: 3469
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).
Upvotes: 2