加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

单元测试 – 试图在Angular中模拟$http

发布时间:2020-12-17 18:03:31 所属栏目:安全 来源:网络整理
导读:我正在尝试为我创建的服务创建一些基本的测试覆盖率.这是我的服务: App.factory('encounterService',function ($resource,$rootScope) { return { encounters: [],encountersTotalCount: 0,encountersIndex: 0,resource: $resource('/encounters/:encounter
我正在尝试为我创建的服务创建一些基本的测试覆盖率.这是我的服务:

App.factory('encounterService',function ($resource,$rootScope) {
  return {
    encounters: [],encountersTotalCount: 0,encountersIndex: 0,resource: $resource('/encounters/:encounterId',{encounterId:'@encounterId'},{
      search: {
        method: 'GET',headers: {
          'RemoteUser': 'jjjyyy','Content-Type': 'application/json'
        }
      }
    }),getMoreEncounters: function() {
      var that = this;
      that.resource.search({},function(data) {
        that.encountersTotalCount = data.metadata.totalCount;
        _.each(data.encounters,function(encounter) {
          that.encounters.push(encounter);
        });
        that.busy = false;
        that.offset += 10;
        $rootScope.$broadcast('encountersFetched');
      });
    }
  };
});

以下是我无法上班的测试:

describe('encounterService',function() {
  var _encounterService,httpBackend;
  beforeEach(inject(function(encounterService,$httpBackend) {
    _encounterService = encounterService;
    httpBackend = $httpBackend;
    var url = '/encounters/';
    httpBackend.when('GET',url).respond([{},{},{}]);
  }));

  afterEach(function() {
    httpBackend.verifyNoOutstandingExpectation();
    httpBackend.verifyNoOutstandingRequest();
  });

  it('should return a list of encounters',function() {
    _encounterService.getMoreEncounters();
    httpBackend.flush();
    expect(_encounterService.encounters.size).toBe(3);
  });
});

我得到的错误是

Chrome 31.0.1650 (Mac OS X 10.8.5) Clinical App services encounterService should return a list of encounters FAILED
    Error: Unexpected request: GET encounters
    No more request expected
        at $httpBackend (/Users/mhamm/Developer/clinical/app/bower_components/angular-mocks/angular-mocks.js:1179:9)
        at sendReq (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:7611:9)
        at $http.serverRequest (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:7345:16)
        at wrappedCallback (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:10549:81)
        at wrappedCallback (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:10549:81)
        at /Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:10635:26
        at Scope.$eval (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:11528:28)
        at Scope.$digest (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:11373:31)
        at Function.$httpBackend.flush (/Users/mhamm/Developer/clinical/app/bower_components/angular-mocks/angular-mocks.js:1453:16)
        at null.<anonymous> (/Users/mhamm/Developer/clinical/test/spec/clinical.spec.js:78:21)
    Error: [$rootScope:inprog] $digest already in progress
    http://errors.angularjs.org/1.2.0/$rootScope/inprog?p0=%24digest
        at /Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:78:12
        at beginPhase (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:11830:15)
        at Scope.$digest (/Users/mhamm/Developer/clinical/app/bower_components/angular/angular.js:11364:9)
        at Function.$httpBackend.verifyNoOutstandingExpectation (/Users/mhamm/Developer/clinical/app/bower_components/angular-mocks/angular-mocks.js:1486:16)
        at null.<anonymous> (/Users/mhamm/Developer/clinical/test/spec/clinical.spec.js:68:21)

我不完全理解嘲笑,所以我确信我做的事情基本不正确.请告诉我我做错了什么.

解决方法

$resource会自动从网址中删除尾部斜杠.

从版本1.3.0开始,有一个fourth argument允许您设置stripTrailingSlashes:false来保留它们.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读