2016-03-29 106 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({}); 
相关问题