【发布时间】:2016-08-16 02:34:34
【问题描述】:
我有一个服务 MyService,其中一个函数使用了我想测试的 ga() 事件跟踪调用:
angular.module('myModule').factory('MyService', [function() {
var myFunc = function() {
ga('send', 'event', 'bla');
// do some stuff
}
return {
myFunc: myFunc
}
]);
我的规范文件如下所示:
describe('The MyService', function () {
var MyService,
ga;
beforeEach(function () {
module('myModule');
ga = function() {};
});
beforeEach(inject(function (_MyService_) {
MyService = _MyService_;
}));
it('should do some stuff', function () {
MyService.myFunc();
// testing function
});
});
运行我的测试总是给我:
ReferenceError:找不到变量:ga
【问题讨论】:
-
如果你想测试一个服务,你不应该使用 Protractor。 Protractor 旨在开发和运行端到端测试,在浏览器中从用户的角度测试整个应用程序。
-
抱歉,我当然是在谈论单元测试 - 更改了我的文字
-
ga 是在函数内部定义的,不是全局的。试试 window.ga = function() {}
标签: angularjs unit-testing google-analytics jasmine google-analytics-api