2014-06-12 2 views
0

나는 내 컨트롤러에서 사용하고자하는 데이터 집합을 리턴하는 DataContext 서비스를 가지고 있습니다. 이 데이터는 ng-grid 지시문에 사용됩니다. 그리드 옵션은 GridOptionsService에서 제공합니다.AJAX 데이터를 이용한 각도 재스민 단위 테스트

이 모든 것은 정상적으로 작동하지만 모든 것이 작동하는지 확인하고 확인하기 위해 단위 테스트를 작성하려고합니다.

describe('Grid display test', function() { 
    var $scope, elm, oCtrl; 

    beforeEach(module('ngGrid')); 

    beforeEach(inject(function ($rootScope, $compile, $controller,DataContext,GridOptionsService) { 
     $scope = $rootScope.$new(); 
     $scope.gridOptions = GridOptionsService.getGridOptions('documents'); 
     $scope = $rootScope; 
     elm = angular.element('<div ng-grid="gridOptions"></div>'); 

     oCtrl = $controller('Repository',{$scope: $scope}); 
     $compile(elm)($scope) 
     DataContext.getDocuments().then(function(data){ 
      $scope.myData = data; 
      console.log('here are the grid options: ') 
      console.log($scope.gridOptions); 
     }) 
    })); 

    it('should display rows',function(done){ 
     inject(function($rootScope, $compile, $controller, DataContext,GridOptionsService){ 
      $rootScope.$apply(function(){ 
       DataContext.getDocuments().then(function(data){ 
        expect(data.length).toBe(1000); 
        done(); 
       }) 
      }) 
     }) 
    }) 
}); 

DataContext.getDocuments는 약속을 반환하고 난 컨트롤러의 myData 변수를 설정하는 것을 사용한다. 이 데이터는 그리드의 데이터입니다. $scope.gridOptions = GridOptionsService.getGridOptions('documents');

gridOptions는 단순히 서비스에서 반환 된 JS 개체입니다. 테스트를 실행할 때 다음과 같은 오류가 발생합니다. Error: [$injector:unpr] Unknown provider: DataContextProvider <- DataContext

사양 러너에 포함되어야하는 모든 스크립트가 있으며 코드는 작동하지만 필자는 테스트 방법을 모르겠습니다.

Jasmine을 사용하여 DOM의 모양을 변경하는 AJAX 코드를 테스트하려면 어떻게해야합니까?

답변

0

재스민 테스트에 대한 사용자 지정 종속성을 조롱 해보십시오. [$ injector : unpr]은 $ injector가 필요한 종속성을 해결할 수 없기 때문에 발생합니다. $ provide를 사용하여 구성 요소를 인젝터에 등록 할 수 있습니다. https://docs.angularjs.org/api/auto/object/ $가

을하는 데 도움이

희망을 제공합니다 ... 여기

beforeEach(function() { 

     mockDependency = { 
      getDataSet: function() { 
       return 'mockDataSet'; 
      } 
     }; 

     module(function ($provide) { 
      $provide.value('DataContext', mockDependency); 
     }); 

    }); 

제공 $에 대한 문서입니다 ... 뭔가를 추가하려고