angularjs - $ httpbackend错误:意外请求

时间:2016-04-25 09:58:51

标签: angularjs unit-testing karma-jasmine httpbackend

我知道有很多这样的问题,但这些问题都没有对我有用,我也不知道发生了什么以及为什么他们不能处理我的具体案例

我试图使用$ httpBackend测试控制器。

不幸的是,我总是得到

  

意外请求:GET default-system.json

     

不再需要预期

控制器我试图使用我工厂的load()方法测试加载数据:

angular.module('services', ['ngResource']).factory('myData', [
  '$http', '$stateParams', function($http, $stateParams) {
    var myData;
    myData= function(Data) {
      if (Data) {
        return this.setData(Data);
      }
    };
    myData.prototype = {
      setData: function(Data) {
        return angular.extend(this, Data);
      },
      load: function() {
        var scope;
        scope = this;
        return $http.get('default-system.json').success(function(Data) {
          return scope.setData(Data.data);
        }).error(function(err) {
          return console.error(err);
        });
      },
      filtered: function() {
        var scope;
        scope = this;
        return $http.get('default-system.json').success(function(Data) {
          return angular.forEach(Data.data, function(item) {
            var urlZoneId;
            urlZoneId = parseInt($stateParams.zoneID);
            if (item.iID === urlZoneId) {
              return scope.setData(item);
            }
          });
        });
      }
    };
    return myData;
  }
])

这是我试图测试的控制器:

angular.module('menuController', ['services']).controller('menu', [
  '$scope', 'myData', function($scope, myData) {
    $scope.test= new myData();
    $scope.test.load();
  }
]);

这是单元测试:

describe('Controller: menu', function() {
  var $controller, $rootScope, myData, httpBackend, mockedRequest;

  mockedRequest = {
   "error": 0,
   "ts": 1456151050,
   "tm": "2016-02-22T14:24:10+0000",
   "data": [{....},{....}]
  ]};

  beforeEach(module('App'));

  beforeEach(inject(function(_$rootScope_, _$controller_) {
    $rootScope = _$rootScope_;
    return $controller = _$controller_('menu', {
      $scope: $rootScope
    });
  }));

  beforeEach(inject((function($httpBackend, _myData_) {
    myData = _myData_.prototype;
    return httpBackend = $httpBackend;
  })));

  afterEach(function() {
    httpBackend.flush();
    httpBackend.verifyNoOutstandingExpectation(false);
    return httpBackend.verifyNoOutstandingRequest();
  });

  return it('Should check that the controller is injected correctly', function() {
    httpBackend.expectGET('default-system.json').respond(mockedRequest);
    return myData.load().then(function(result) {
      return console.log(result);
    });
  });
});

但是我得到了上面提到的错误。有什么想法吗?

我真的卡住了,我无法弄清楚它为什么不起作用。

提前感谢您提供任何帮助

0 个答案:

没有答案