我在Grunt版本中使用Karma + Jasmine为我的Angular应用程序进行了一些单元测试。我有以下用于设置Google Analytics的运行块代码:
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');
运行grunt test
时,我从$window.ga(..
行收到以下错误:
TypeError: 'undefined' is not a function (evaluating '$window.ga('create', 'UA-XXXXXXX-X', 'auto')')
如果我完全删除该行,则错误消失,Jasmine测试继续正常。有什么想法吗?
答案 0 :(得分:5)
我们提供Jasmine在karma.conf.js文件中使用的所有JavaScript文件来加载依赖项。由于Jasmine找不到在analytics.js中定义的ga函数,因此未定义。为避免此错误,您可能需要像下面那样模拟它
var $rootScope, $window;
beforeEach(inject(function(_$rootScope_, _$window_) {
$rootScope = _$rootScope_;
$window = _$window_;
$window.ga = function(){};
}));