在Jest中手动模拟谷歌地图



我想模仿我在@googlemaps/js-API-loader包中使用的谷歌地图API。

目前,我需要确保调用了地理编码器,我正试图通过以下方式做到这一点:

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

但我有

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', () => () => ({

不确定如何继续。有人能帮我吗?

我实际上是在Stackoverflow上找到的。不知道为什么昨天谷歌没有向我推荐这个

这就是我找到答案的地方

所以我做了以下事情:

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,
};
};

然后CCD_ 1

检查包https://www.npmjs.com/package/@谷歌地图/jest-mocks用于模拟和示例。我不确定Geocoder是否有mock,但应该可以在那里遵循模式(并发送pr(。

最新更新