У меня есть директива, где, в конкретном случае я использую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);
}
Выглядит законным в целом. Возможно, вы захотите использовать 'toHaveBeenCalledWith (dist, src)', чтобы утверждать также аргумент вызова. И цепочка 'andCallThrough()', если другие части тестируемой функции зависят от результата 'extend' –
На самом деле, я был бы рад использовать предложенные варианты, но тест продолжает терпеть неудачу. Я предполагаю, что angular.extend не вызывается. По крайней мере, это не тот экземпляр углового .., если это возможно. – aprok