2017-02-08 196 views
0

我需要检查两个东西在这里:茉莉花单元测试控制器

  1. 响应长度。将模拟数据指定为[{name:'John',id:1},{name:'Josh',id:2}],所以响应长度应该是2.这个测试的失败长度总是为1。
  2. 响应数据应该相等。即。 expect(IndexSummaryService.getIndexSummaryQueues).toEqual([{name:'John',id:1},{name:'Josh',id:2}]);

试验是用消息失败的:预期功能为等于[对象({名称: '约翰',ID:1}),对象({名称:'Josh的,ID:2})]

我的服务有点不同,它将api作为URL的参数。

请建议如何使这些单元测试工作。

这是服务代码

app.service("IndexSummaryService", ['$http', function ($http) { 
    this.getIndexSummaryQueues = function (api) {   
     return $http.get(api, { cache: false }); 
    }; 
    }]); 

这是控制器

$scope.loadRecords = function (api) { 
     $scope.loading = true; 
     var GetIndexSummaryQueue = IndexSummaryService.getIndexSummaryQueues(api); 
     GetIndexSummaryQueue.then(function (response) { 
      $scope.Queues = response.data; 
     }, function (error) { 
      if (error.status == 500) { 
       $scope.errorStatus = "Error " + error.status; 
       $scope.errorMsg = error.data.message; 
      } 
      else { 
       $scope.errorStatus = "Error " + error.status; 
       $scope.errorMsg = GlobalConstants.errormessage; 
      } 
      $scope.errorpage = true; 
      $scope.success = false; 
      console.log("Status Data : " + error.data.message); 
      console.log("Status Error : " + error.status); 
     }).then(function() { 
      $scope.loading = false; 
     }); 
    } 

我已经写在下面茉莉单元测试是茉莉代码。

describe("ISummary ->", function() { 

beforeEach(function() { 
    module("ApplicationModule"); 
}); 

var $httpBackend; 
var scope, createController; 

beforeEach(inject(function ($rootScope, _$httpBackend_, $controller) { 
    $httpBackend = _$httpBackend_; 
    scope = $rootScope.$new(); 
    createController = function() { 
     return $controller('IndexingSummaryController', { 
      $scope: scope 
     }); 
    };  

    $httpBackend.when("GET", "https://domain.com/captivaapi/api/capturestats/pldindexingSummary") 
     .respond([{ name: 'John', id: 1 }, { name: 'Josh', id: 2 }]); 
})); 

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

describe("Service->", function() { 
    it("can load topics", inject(function (IndexSummaryService) {   
     $httpBackend.expectGET("https://domain.com/captivaapi/api/capturestats/pldindexingSummary"); 
     IndexSummaryService.getIndexSummaryQueues('https://domain/captivaapi/api/capturestats/pldindexingSummary'); 
     $httpBackend.flush(); 
     expect(IndexSummaryService.getIndexSummaryQueues.length).toBeGreaterThan(0); 

     expect(IndexSummaryService.getIndexSummaryQueues.length).toEqual(2); 

     expect(IndexSummaryService.getIndexSummaryQueues).toEqual([{ name: 'John', id: 1 }, { name: 'Josh', id: 2 }]); 
    })); 
}); 

回答

1

你不是测试承诺的响应,请尝试以下(可能不是很准确,因为它已经有一段时间,因为我用棱角分明,但基本上让你的断言在随后块,一旦承诺了解决)。

describe("Service->", function() { 
    it("can load topics", inject(function (IndexSummaryService) {   
     $httpBackend.expectGET("https://domain.com/captivaapi/api/capturestats/pldindexingSummary"); 

     IndexSummaryService.getIndexSummaryQueues('https://domain/captivaapi/api/capturestats/pldindexingSummary').then(function(res) { 
      expect(res.length).toBeGreaterThan(0); 
      expect(res.length).toEqual(2); 
      expect(res).toEqual([{ name: 'John', id: 1 }, { name: 'Josh', id: 2 }]); 
     }); 
     $httpBackend.flush(); 
    })); 
}); 
+0

谢谢Lee ..它的工作..一个小的变化,这是增加..res.data.length和res.data .. –