2016-08-03 2 views
0

Следующий запрос HTTP, перехватывается модулем ngMockE2E «$ httpBackend, никогда не завершается. Что такое правильный способ получить ответ от $httpBackend?

var app = angular.module('app', ['ngMockE2E']); 

app.controller('Foo', function(MyHttpService, $scope) { 
    MyHttpService.get().then(function(data) { 
    $scope.async_data = data; 
    }); 
}); 

app.factory('MyHttpService', function($http, $q) { 
    return { 
    get: function() { 
     console.log('MyHttpService.get()'); 
     return $http.get('/test').then(function(data) { 
     console.log('$http.get()', data); 
     return data; 
     }); 
    } 
    } 
}); 

app.run(['$httpBackend', function($httpBackend) { 
    $httpBackend 
    .whenGET(/^\/test/) 
    .respond(function(method, path) { 
     console.log(method, path); 
     return {method: method, path: path}; 
    }); 
}]); 

Вот live example on codepen

ответ

1

причина, по которой не работает в том, что обратный вызов внутри .respond не возвращает правильные данные и впоследствии не может молча изменить его следующим образом:.

app.run(['$httpBackend', function($httpBackend) { 
    $httpBackend 
    .whenGET(/^\/test/) 
    .respond(function(method, path) { 
     console.log(method, path); 
     return [200, {method: method, path: path}]; 
    }); 
}]); 

Here a working codepen

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