Я пытаюсь проверить очень просто данные AngularJS служба загрузки JSON:
angular.module('archive', []) .factory('Loader', function ($http) { var result; $http.get('path').success(function(data) { result = data; console.log('returning: ', result); }); return { getData: result } });
Вот мой тест:
describe('TestArchive', function() { beforeEach(module('archive')); it('should load data', inject(function(Loader, $httpBackend){ $httpBackend .whenGET('path') .respond(22); var result = Loader.getData; $httpBackend.flush(); console.log(result); })); });
я ожидал увидеть 22
загружен, но, как я вижу из console
, этого не происходит, и result
- undefined
. Любая идея, что не так?
Hm ... таким образом 'Loader' возвращает обещание сделать мой API слишком сложным. Мне нужно, чтобы они вернули фактические данные. Я видел, что тот же трюк работает в Controllers - '$ scope.result = data' внутри обратного вызова '$ http(). success'. Я просто не могу заставить его работать с фабрикой. –
Как-то я все еще не могу заставить его работать. Я не вижу 'console.log (result)' выполнен. Также я попытался поставить 'mydata = result' сразу после, но' mydata' остался 'undefined' –