Angular 2 Karma - 无法找到变量google

时间:2017-07-24 14:02:57

标签: angular google-maps google-maps-api-3 karma-jasmine

在我的应用程序中,我使用google API进行地图,因此在index.html中我有:

<script src="https://maps.googleapis.com/maps/api/js?key=XXXXXXXX"></script>

有了这个,我可以简单地使用谷歌API而不需要任何其他导入,例如使用此声明:

infoWindow: google.maps.InfoWindow = new google.maps.InfoWindow()

现在我正在使用Karma + Jasmine进行测试,在我使用google的组件中,我有一条Can't find variable: google错误消息。我明白为什么会发生,但我不知道如何让它发挥作用。

有什么想法吗?谢谢!

2 个答案:

答案 0 :(得分:1)

  1. 创建自己的google-mock.js
  2. 使用将Google绑定到窗口的IIFE进行填充:
(function () {
    window.google = window.google || {
        maps: {
            Map: function () { },
            Point: function () { },
            event: {
                trigger: function () { },
                addListener: function () { }
            },
            LatLng: function () { },
            InfoWindow: function () { },
            Size: function () { },
            OverlayView: function () { },
            Marker: function () { }
        }
    };
})();
  1. 将其添加到karma.config中的文件数组中:
files: ['../test/unit/google-map-mock.js']

您必须将库中需要的任何内容添加到IIFE。

答案 1 :(得分:0)

@types/googlemaps添加到您的devDependencies:

npm install --save @types/googlemaps

将以下代码添加到您使用google.maps

的组件或服务的顶部
import {} from '@types/googlemaps';