AngularJS应用程序中的Jasmine SpyOn窗口函数

时间:2015-04-25 11:51:51

标签: angularjs jasmine intercom.js

我在路线改变时创建了一个函数:

window.intercom = function(action, msg) {
  return window.Intercom(action, msg);
};

我试图窥探这个功能,但不明白怎么做。我按照this SO post.

中的建议

如果我使用它:

beforeEach(inject(function($compile, $rootScope, $q, _$location_, $routeParams) {
  element = angular.element("<add-box></add-box>");
  $compile(element)($rootScope);
}));

it("should cancel adding a box!", function() {
  spyOn(window, 'intercom')
});

我收到错误:

intercom() method does not exist

所以我尝试了这个:

it("should cancel adding a box!", function() {
  var intercom = jasmine.createSpy();
});

其中说:

TypeError: 'undefined' is not a function (evaluating 'window.intercom('hide')')

我怎样才能让它发挥作用?我确信这很简单,我只是Jasmine的新手。

1 个答案:

答案 0 :(得分:0)

在之前的函数中,在beforeEach或更好的函数中,你可以做这样的事情:

window.intercom = jasmine.createSpy();

这将在窗口上为您提供对讲功能。