测试$ HTTP角服务:没有待处理的要求



我正在尝试为返回$ http.get的简单角色工厂编写测试,但是我的测试失败了,"无需齐平的请求!"。

我已经遵循了我在网上找到的一些示例,但没有任何作用。

这是我的服务:

angular.module('MPMReportGenerator')
  .factory('sectionService', function ($http, $log) {
    return {
      getSections: function () {
        return $http
          .get('/MPMReportGenerator/api/categories/all')
          .then(function (response) {
            return response.data
          })
          .catch(function (error) {
            $log.error('ERROR:', error)
            throw error
          })
        }
      }}
    )

这是我的规格:

describe('sectionService', function () {
  'use strict'
  var $httpBackend, sectionService, $rootScope
  beforeEach(function () {
    module('MPMReportGenerator')
    inject(function ($injector) {
      $httpBackend = $injector.get('$httpBackend')
      $rootScope = $injector.get('$rootScope')
    })
    inject(function (_sectionService_) {
      sectionService = _sectionService_
    })
  })
  afterEach(function () {
    $httpBackend.verifyNoOutstandingExpectation()
    $httpBackend.verifyNoOutstandingRequest()
  })
  it('should have sectionService service be defined', function () {
    expect(sectionService).toBeDefined()
  })
  it('should get the section list', function () {
    var sections
    $httpBackend.when('GET', '/MPMReportGenerator/api/categories/all').respond(200)
    sectionService.getSections().then(function (data) {
      sections = data
    })
    $rootScope.$digest()
    expect($httpBackend.flush()).doesNotThrow()
  })
})

我在做什么错?

删除工厂内的承诺。无论如何,您都在控制器中访问承诺。就像这样返回HTTP请求。

angular.module('MPMReportGenerator')
    .factory('sectionService', function($http, $log) {
        return {
            getSections: function() {
                return $http
                    .get('/MPMReportGenerator/api/categories/all')
            }
        }
    })

访问在这里的访问承诺

 sectionService.getSections().then(function(response) {
    sections = response.data // the values comes under data property so need to access like this.
 })

最新更新