在 Jest 中手动模拟 Google 个地图
Manually mock Google Maps in Jest
我想模拟我在 @googlemaps/js-api-loader 包中使用的 google 地图 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', () => () => ({
不确定如何进行。谁能帮我解决这个问题?
检查包 https://www.npmjs.com/package/@googlemaps/jest-mocks 中的模拟和示例。我不确定 Geocoder 是否有模拟,但应该可以遵循那里的模式(并发送 pr)。
我实际上是在 Whosebug 上找到的。不知道为什么昨天 Google 没有向我推荐这个。
是我找到答案的地方
所以我做了以下事情:
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,
};
};
然后是 beforeAll(() => { setupGoogleMock(); });
我想模拟我在 @googlemaps/js-api-loader 包中使用的 google 地图 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', () => () => ({
不确定如何进行。谁能帮我解决这个问题?
检查包 https://www.npmjs.com/package/@googlemaps/jest-mocks 中的模拟和示例。我不确定 Geocoder 是否有模拟,但应该可以遵循那里的模式(并发送 pr)。
我实际上是在 Whosebug 上找到的。不知道为什么昨天 Google 没有向我推荐这个。
所以我做了以下事情:
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,
};
};
然后是 beforeAll(() => { setupGoogleMock(); });