2016-03-29 12 views
0

Я тестирую свой Service с помощью httpBackend. Это простой запрос get, который я хочу проверить (код ответа) в этом случае. Но я продолжаю получать сообщение об ошибке:ТипError: undefined не является функцией

TypeError: undefined is not a function (evaluating '$httpBackend.expectGET('/api/something').response({})') in test/spec/services/requests.js (line 22) 
     test/spec/services/requests.js:22:51 
     Error: Unsatisfied requests: GET /api/something in /bower_components/angular-mocks/angular-mocks.js (line 1812) 
     [email protected]/bower_components/angular-mocks/angular-mocks.js:1812:74 
     /test/spec/services/requests.js:28:48 

Это услуга:

angular.module('requestService', []) 
    .factory('Request', ['$http', 'localConfig', 'Query', function($http, localConfig){ 
return { 
     getRequest: function(fromDate, toDate) { 
     return $http({ 
      url: '/api/something', 
      method: "GET", 
      params: {fromDate: fromDate, 
        toDate: toDate}, 
      headers: { 
      'Content-Type': 'application/json; charset=utf-8' 
      } 
     }) 
     } 
    } 
    }]); 

Это, как я тестирую его:

describe('Service: Request', function() { 
    var reqService, $httpBackend; 
    beforeEach(module('webapp')); 
    beforeEach(module('requestService')); 
    beforeEach(inject(function(Request, _$httpBackend_){ 
    reqService = Request; 
    $httpBackend = _$httpBackend_; 
    })); 

    it('should test the response to be 200', function(){ 
    $httpBackend.expectGET('/api/something').response({}); 
    $httpBackend.flush(); 
    }); 

    afterEach(function(){ 
    $httpBackend.verifyNoOutstandingExpectation(); 
    $httpBackend.verifyNoOutstandingRequest(); 
    }) 
}); 

EDIT

I внесла изменение (как было предложено) в мой тест:

it('should test the response to be 200', function(){ 
    console.log('service: ' + reqService); 
    reqService.getRequest('2016-03-26', '2016-03-29'); 
    $httpBackend.expectGET('/api/something').respond({}); 
    $httpBackend.flush(); 
    }); 

Теперь я получаю эту ошибку:

Error: Unexpected request: GET /api/something?fromDate=2016-03-26&toDate=2016-03-29 
     Expected GET /api/something in /bower_components/angular-mocks/angular-mocks.js (line 1403) 
     [email protected]/bower_components/angular-mocks/angular-mocks.js:1403:90 
     [email protected]/bower_components/angular/angular.js:11235:21 
     [email protected]/bower_components/angular/angular.js:10945:23 
     [email protected]/bower_components/angular/angular.js:15552:30 
     /bower_components/angular/angular.js:15568:39 
     [email protected]/bower_components/angular/angular.js:16820:28 
     [email protected]/bower_components/angular/angular.js:16636:36 
     [email protected]/bower_components/angular-mocks/angular-mocks.js:1778:45 
     /test/spec/services/requests.js:24:23 
     Error: [$rootScope:inprog] $digest already in progress 
     http://errors.angularjs.org/1.5.0/$rootScope/inprog?p0=%24digest in bower_components/angular/angular.js (line 17178) 
     [email protected]/bower_components/angular/angular.js:17178:88 
     [email protected]//bower_components/angular/angular.js:16616:19 
     [email protected]/bower_components/angular-mocks/angular-mocks.js:1810:45 
     /test/spec/services/requests.js:29:48 

ответ

1

Вы не вызвали getRequest функции обслуживания, поэтому Ajax вызова никогда не дозвонился &, поэтому expectGET не получили satiesfied & выброшена Error: Unsatisfied requests: Ошибки. Также исправить опечатку в response к respond

it('should test the response to be 200', function(){ 
    //action 
    reqService.getRequest(); 

    $httpBackend.expectGET('/api/something').respond({}); 
    $httpBackend.flush(); 
}); 
+0

Я попробовал ваш Предложенное решение, но я все еще получаю другую ошибку. Я сделал редактирование .. – faizanjehangir

+0

Вы могли бы создать скрипку/plunkr? –

+0

@faizanjehangir Я не вижу в нем никакого кода –

0

Я думаю, что вы имели в виду использовать respond(), не response():

$httpBackend.expectGET('/api/something').respond({}); 
Смежные вопросы