【问题标题】:How to call $http request [duplicate]如何调用 $http 请求 [重复]
【发布时间】:2016-01-02 05:42:38
【问题描述】:

我正在尝试制作 $http 请求的演示并测试该服务。我确实喜欢这个

.controller('cntrl',function($scope,appfactory,$http){

  $scope.data=[];
  appfactory.setValue('test abc');

  $scope.getData=function(){
    $http.get('data.json').success(function(data){
      console.log(JSON.stringify(data))
      $scope.data=data;
    }).error(function(data){
        console.log(JSON.stringify(data))
    })
  }
  $scope.getData();
  $scope.toggle=function(){
      if(appfactory.mode()=='a'){
    $scope.message='naveen'
  }else {
     if(appfactory.mode()=='b'){
       $scope.message='parveen'
  }
  }
  }

})

我从 json 文件加载该数据并将其显示在视图中..但是当我尝试测试该应用程序时..我得到错误为什么?如何消除该错误

beforeEach(inject(function($rootScope,$controller,appfactory,_$httpBackend_) {
    $scope = $rootScope.$new();  
    $httpBackend=_$httpBackend_;

      createController = function() {
       return $controller('cntrl', {'$scope' : $scope });
     };

}));



   it("tracks that the spy was called", function() {
    var response=[{"name":"naveen"},{"name":"parveen"}]
    $httpBackend.expectGET('data.json').respond(response);
         var controller = createController();

     $scope.getData();
     $httpBackend.flush();

     expect($scope.data[0].name).toEqual('naveen')
  });


})

这是我的代码 http://plnkr.co/edit/zdfYdtWbnQz22nEbl6V8?p=preview

【问题讨论】:

  • @claies 我的问题不同..!!
  • 有什么不同?您永远不会在此代码中提供 whenGET
  • 哦,明白了..!!解决我的问题

标签: angularjs angularjs-directive angularjs-scope jasmine karma-jasmine


【解决方案1】:

http 获取数据的调用在测试中实际上被调用了两次。一种是初始化控制器时(因为您正在调用$scope.getData()),第二种是您在规范中手动调用$scope.getData()

您的期望只会被嘲笑一次(在控制器初始化之前)。要修复测试(模拟控制器实际在做什么),必须在调用 $scope.getData() 之前再次设置期望值。

请参阅 plunker:http://plnkr.co/edit/eLPOZTCgkSfoACLJsVZo?p=preview

您可以将expectGET 替换为whenGET,如果不调用资源,测试不会失败。但是,由于您期望 expect($scope.data[0].name).toEqual('naveen') 'naveen' 来自 http 响应,因此该更改应该没问题。

【讨论】:

猜你喜欢
  • 2021-08-04
  • 2016-11-27
  • 2019-05-17
  • 1970-01-01
  • 2019-12-14
  • 2016-01-08
  • 2017-04-24
  • 2018-12-08
  • 2019-04-19
相关资源
最近更新 更多