Я пытаюсь выполнить некоторые http.get()
запросов в угловой службе, возвращая обещание.Выполнение обещаний в angularJS
Вот отрывок из моей первоначальной службы:
angular.module('dashboard').service('DashboardHTTP', ['$q', '$http', function ($q, $http) {
this.get_info = function() {
var deferred = $q.defer();
$http.get('/dashboard/4/api/info', { cache: true }).success(function (data) {
deferred.resolve(data);
}).error(function() {
deferred.reject('Could Not Complete Request');
});
return deferred.promise;
}
}]);
А вот отрывок из части моего контроллера, где я называю обслуживание:
DashboardHTTP.get_info().then(
function (response) {
var resp = response;
$rootScope.dash_info = resp;
},
function (response) {
return 'error';
},
function (response) {
return 'notify';
});
Мои вопросы:
Я борюсь с определением того, сколько тестирования необходимо для такого взаимодействия. В настоящее время у меня есть следующий тест, который тестируется на уровне службы, но мне интересно, нужно ли мне тестировать на уровне контроллера, и если да, какое именно тестирование должно произойти?
beforeEach(inject(function (_$httpBackend_, $injector) { service = $injector.get('DashboardHTTP'); $httpBackend = _$httpBackend_; })); afterEach(function() { $httpBackend.verifyNoOutstandingExpectation(); $httpBackend.verifyNoOutstandingRequest(); }); describe('get_info', function() { it(' should get info from the url /api/info', function() { var returnData = { data: 'lots of data' }; $httpBackend.expectGET('/dashboard/4/api/info').respond(returnData); var returnedPromise = service.get_info(); var result; returnedPromise.then(function (response) { result = response; }); $httpBackend.flush(); expect(result).toEqual(returnData); }); });
Моя цель состоит в том, что я хочу, чтобы установить
$rootScope.dash_info
в ответ из запроса HTTP, сделанногоService.get_info()
. Соответствует ли моя реализация в моем контроллере? Если да, то как я могу проверить, что правильные данные передаются на уровне контроллера?