在 Jest 中手动模拟 Google 地图

问题描述 投票:0回答:2

我想模拟我正在使用 @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', () => () => ({

不知道如何继续。谁能帮我解决这个问题吗?

javascript google-maps jestjs
2个回答
3
投票

我做了以下事情:

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();
});

是我找到答案的地方。


2
投票

检查包 https://www.npmjs.com/package/@googlemaps/jest-mocks 以获取模拟和示例。我不确定 Geocoder 是否有模拟,但应该可以遵循那里的模式(并发送 pr)。

© www.soinside.com 2019 - 2024. All rights reserved.