You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular单元测试(Jasmine Karma)报错:找不到名称'google'

解决单元测试中"Cannot find name 'google'"的问题

方法1:配置测试环境的TypeScript配置文件

你在tsconfig.app.json中添加googlemaps无效,因为单元测试使用的是**tsconfig.spec.json**配置文件。打开该文件,在compilerOptions.types数组中加入"googlemaps":

{
  "compilerOptions": {
    "types": [
      "jasmine",
      "googlemaps" // 添加这一行
    ]
  }
}

方法2:声明全局google变量

如果不想修改配置文件,可直接在测试文件顶部或项目的typings.d.ts文件中添加全局变量声明:

declare var google: any;

若需要类型提示支持,先安装对应类型依赖:

npm install @types/googlemaps --save-dev

再在测试文件中引入类型:

import { } from '@types/googlemaps';

方法3:Mock Google Maps对象(单元测试推荐方案)

单元测试无需依赖真实的Google Maps服务,直接模拟google对象既能解决报错,又能专注测试自身代码逻辑。在测试的beforeEach钩子中添加模拟代码:

beforeEach(() => {
  // 模拟google.maps的核心结构
  (window as any).google = {
    maps: {
      places: {
        Autocomplete: jasmine.createSpy('Autocomplete').and.returnValue({
          // 可根据测试需求模拟Autocomplete的方法或属性
        })
      },
      event: {
        addListener: jasmine.createSpy('addListener')
      }
    }
  };
  // 其他测试初始化操作
});

内容的提问来源于stack exchange,提问作者Priyas Paulzagade

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:20:19