2015-12-22 2 views
0

У меня есть директива, где, в конкретном случае я используюUnit функция тестирования angular.extend с жасмином spyOn

angular.extend(dist, src) 

Теперь я хотел бы проверить этот случай и проверить, если angular.extend называется.

Я пытаюсь использовать spyOn

spyOn(angular, 'extend') 

А потом в тесте

expect(angular.extend).toHaveBeenCalled() 

Не уверен, что я могу сделать это на всех, но я решил дать ему попробовать.

Спасибо за любую помощь.

EDIT:

Вот мой тест, отредактирован в соответствии с Вашим советом.

it('should create new scope and extend config if config is passed to directive', function() { 
    var spy = jasmine.createSpy('extendSpy').and.callThrough(); 
    angular.extend = spy; 
    timeout.flush(); 
    _.forEach(scope.accordionConfig, function(configItem) { 
     if (configItem.config) { 
      expect(angular.extend).toHaveBeenCalled(); 
     } 
    }); 
}); 

В beforeEach крючке у меня нет ничего особенного, просто назначая конфигурации, создавая какой-либо другой препарат для испытаний отдыха и сводную директиву.

Вот фрагмент из функции ссылки, которую я пытаюсь проверить

if (scope.format === 'directive') { 
    if (scope.config) { 
     newScope = $rootScope.$new(); 
     angular.extend(newScope, scope.config); 
    } 
    scope.content = $compile(scope.content)(newScope || scope); 
} 
+0

Выглядит законным в целом. Возможно, вы захотите использовать 'toHaveBeenCalledWith (dist, src)', чтобы утверждать также аргумент вызова. И цепочка 'andCallThrough()', если другие части тестируемой функции зависят от результата 'extend' –

+0

На самом деле, я был бы рад использовать предложенные варианты, но тест продолжает терпеть неудачу. Я предполагаю, что angular.extend не вызывается. По крайней мере, это не тот экземпляр углового .., если это возможно. – aprok

ответ

0

консоли регистрировать значение angular.extend до утверждения, он должен быть экземпляром jasmine.spy, если это не так, есть проблема в том, как вы создаете шпиона, и нам понадобится больше контекста, возможно, ваш полный код может помочь. Я предполагаю, что вы создаете крюк где-то в крюке beforeEach или на одном из других крючков?

Попробуйте следующий код:

var spy = jasmine.createSpy('extendSpy').and.callThrough(); 
angular.extend = spy; 
expect(spy).toBeCalledWith(dist, src); 
+0

Если я хочу сделать console.log (angular.extend) перед утверждением, у меня есть функция, а не экземпляр jasmine.spy , Да, у меня есть перед каждым крючком. Позвольте мне попробовать создать шпион в самом тесте – aprok

+0

не работает .. console.log дает мне это: LOG: function() {...} – aprok

+0

если вам нужно что-нибудь еще из моего кода, просто напишите. На самом деле, не уверен, что вам может понадобиться, потому что я создаю похожие шпионы, и все работает отлично, за исключением этого ответа – aprok

Смежные вопросы