2014-06-24 167 views
0

我三重检查一切,还有似乎是一个错误

服务:

angular.module('app.services') 
     .factory('eventService', ['$http', '$q', function($http, $q) { 
       return { 
        get: function() { 
         var deffered = $q.defer(); 

          $http.get('x') 
          .success(function(data) { 
           deffered.resolve(data); 
          }) 
          .error(function(){ 
           deffered.reject("could not access events"); 
          }); 

          return deffered.promise; 
        } 
       }; 
      }]) 

单元测试:

describe('when fetching events by service', function() { 
    var service; 
    var $httpBackend; 
    var appConfig; 
    beforeEach(function() { 
     module("ngMockE2E"); 
     module("app.services"); 
     inject(function(eventService, _$httpBackend_) { 
      service = eventService; 
      $httpBackend = _$httpBackend_; 
     }); 
    }); 
    it('should get items', function(){ 
      $httpBackend.expectGET('x').respond([{ name : 1}]); 
      var promise = service.get(); 
      promise.then(function(data){ 
       console.log(data); 
      }); 

      $httpBackend.flush(); 
     }); 
}); 

我正在以下错误的.flush()

Error: No pending request to flush !                                                        
      at /test/lib/angular-mocks.js:1148                                             
      at /test/unit/services/EventServiceSpec.js:26  

另外我如何确保$ httpBackend设置正被eventService使用。那eventService是由$ httpBackend的依赖而不是$ http生成的吗?我认为我可能是错误的原因。

+0

没有你它得到工作? –

回答

0
$httpBackend.whenGET('x').respond([{ name : 1}]); // when you receive a request expectation, respond X 
$httpBackend.expectGET('x').respond([{ name : 1}]); // add a request expectation and respond X 
$httpBackend.expectGET('x'); // add a request expectation 

因此,您只是在提出请求时设置行为,而不是实际添加该请求期望。

您需要使用:

$httpBackend.expectGET('x').respond([{ name : 1}]); 

$httpBackend.whenGET('x').respond([{ name : 1}]); 
$httpBackend.expectGET('x'); 
+0

嘿@Diego谢谢你的回答。我明白.expectGET和whenGET之间的区别。然而,我仍然得到相同的错误,我认为它是因为我认为我没有正确设置/注入服务,因为我仍然在你提出的改变后得到相同的错误。 – frictionlesspulley