来自 Angular 应用中的 Google Analytics 的 Jasmine 测试错误

Error in Jasmine test from Google Analytics in Angular app

我正在 G运行t 构建中使用 Karma + Jasmine 为我的 Angular 应用程序进行一些单元测试。我有以下设置 Google 分析的 运行 块代码:

run.$inject = ['$rootScope', '$state', '$location', '$auth', '$window', 'AUTH_EVENTS', 'AuthService', 'Permission'];

function run($rootScope, $state, $location, $auth, $window, AUTH_EVENTS, AuthService, Permission) {
    // Initialize Google Analytics for tracking page views w/ ui-router state changes
    $window.ga('create', 'UA-XXXXXXXX-X', 'auto');

当 运行ning grunt test 我从 $window.ga(.. 行收到以下错误:

TypeError: 'undefined' is not a function (evaluating '$window.ga('create', 'UA-XXXXXXX-X', 'auto')')

如果我完全删除该行,错误就会消失,Jasmine 测试会继续进行,一切正常。有什么想法吗?

我们提供 Jasmine 在 karma.conf.js 文件中使用的所有 JavaScript 文件来加载 dependencies.You 未定义,因为 Jasmine 找不到在 [=15= 中定义的 ga 函数].为避免此错误,您可能需要像下面这样模拟它

var $rootScope, $window;

beforeEach(inject(function(_$rootScope_, _$window_) {
    $rootScope = _$rootScope_;
    $window = _$window_;
    $window.ga = function(){};
}));