2016-03-29 166 views
0

我正在使用httpBackend來測試我的Service。在這種情況下,我想測試一個簡單的get請求(響應代碼)。但我一直得到錯誤:TypeError: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(); 
    }) 
}); 

編輯

我對我的測試進行了修改(如建議):

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({}); 
相關問題