Оконная функция Jasmine SpyOn в приложении AngularJS

Я создал функцию при изменении маршрута:

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

Я пытаюсь шпионить за этой функцией, но не понимаю как. Я последовал совету в этом посте.

Если я использую это:

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')')

Как я могу заставить это работать? Я уверен, что это просто, я просто новичок в Жасмин.

1 ответ

Решение

Как насчет в beforeEach или лучше в функции before вы делаете что-то вроде этого:

window.intercom = jasmine.createSpy();

Это даст вам функцию внутренней связи в окне.

Другие вопросы по тегам