Как шпионить за угловым провайдером заводского метода?
В Жасмин, вы можете spyOn(объект, "функция"). Я пытаюсь шпионить за провайдером, который используется как "provider ()". Как шпионить за этим?
Поставщик выглядит так:
providers.provider('telecom', function() {
this.$get = function() {
return function() {
return 'something';
}
}
}
В контроллере это будет использоваться так:
controllers.controller('ctrl', function(telecom) {
var isp = telecom();
});
Для object.method () мы можем использовать spyOn(object, 'method'). Как насчет провайдера ()?
Я гуглил и не могу найти ничего полезного. Я попытался spyOn(провайдер), но я получил сообщение об ошибке "метод undefined () не существует".
Я даже пытался издеваться над провайдером, но безуспешно. ( http://www.sitepoint.com/mocking-dependencies-angularjs-tests/)
1 ответ
Решение
Вы можете использовать createSpy:
describe('Describe', function() {
var $scope, createController;
var telecomSpy = jasmine.createSpy('telecomSpy');
beforeEach(module('myApp'));
beforeEach(inject(function($rootScope, $controller) {
$scope = $rootScope.$new();
createController = function() {
$controller('MyController', {
$scope: $scope,
telecom: telecomSpy
});
};
}));
it('It', function() {
expect(telecomSpy).not.toHaveBeenCalled();
createController();
expect(telecomSpy).toHaveBeenCalled();
});
});
Демонстрация: http://plnkr.co/edit/bdGZtOKV9mewQt9hteDo?p=preview