Angular Unit Test: Error: Unexpected request: GET

Angular Unit Test: Error: Unexpected request: GET

如何测试下面这种类型的http格式?

$http({
    method: 'GET',
    url: 'https://api.github.com/user/repos',
    headers:{
        'Authorization': "Basic " + btoa("xxxx:xxxx"),
        'Accept': 'application/json; odata=verbose'
    }
})
.success(function(data, status, headers, config) {
    $scope.valid = true;
    $scope.collection = data;
})
.error(function(data, status, headers, config) {
    $scope.error = data;
});

测试代码,

it('should demonstrate using when (200 status)', inject(function($http, $httpBackend) {

    var $scope = {};

    /* Code Under Test */
    $http({
        method: 'GET',
        url: 'https://api.github.com/user/repos',
        headers:{
            'Authorization': "Basic " + btoa("xxxxx:xxxx"),
            'Accept': 'application/json; odata=verbose'
        }
    })
    .success(function(data, status, headers, config) {
        $scope.valid = true;
        $scope.collection = data;
    })
    .error(function(data, status, headers, config) {
        $scope.error = data;
    });
    /* End */

  $httpBackend
    .when('GET', 'https://api.github.com/user/repos', undefined, {
        Authorization: "Basic " + btoa("xxxxx:xxxx"),
        Accept: "application/json;odata=verbose"
    })
    .respond(200, { foo: 'bar' });

  $httpBackend.flush();

  expect($scope.valid).toBe(true);
  expect($scope.collection).toEqual({ foo: 'bar' });

}));

我收到这个错误,

Error: Unexpected request: GET https://api.github.com/user/repos No more request expected

有什么想法吗?

你能试试这个吗

$httpBackend.whenGET('https://api.github.com/user/repos', undefined, {
    Authorization: "Basic " + btoa("xxxxx:xxxx"),
    Accept: "application/json;odata=verbose"
}).respond(function(){ return [200,[{foo: 'bar' }]]});