2014-10-10 2 views
2

Я создал приложение, использующее ng-table, приложение работает нормально, но я не знаю, как написать тестовый пример для этой сортировки и getData.функция сортировки в ngTable с использованием теста Jasmine

Может кто-нибудь пожалуйста, скажите мне какое-то решение для тестирования этой функциональности

Мой код, как указано ниже

тест жасмин случай

describe('Testing Controllers', function() { 
    describe('Testing WorkController Controller', function() { 
     var WorkController, $scope; 

     beforeEach(module('wsd')); 

     beforeEach(inject(function($controller, $rootScope) { 
      $scope = $rootScope.$new(); 
      WorkController = $controller('WorkController', { 
       $rootScope: $rootScope, 
       $scope: $scope, 
       ngTableParams : ngTableParams, 
       $filter: $filter 
      }); 
     })); 

     it('should tableParams when tableParams is called', function() { 

     }); 
    }); 
}); 

рабочих станций/main.js

angular.module('wsd.workstations', []) 

.controller('WorkController', function($rootScope, $scope, $filter, ngTableParams) 
{ 
    $scope.myValues = [{name: "Moroni", age: 50}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}]; 

    $scope.tableParams = new ngTableParams({ 
     sorting: { 
      name: 'asc'  
     } 
    }, { 
     getData: function($defer, params) { 
      $scope.myValues = $filter('orderBy')($scope.myValues, params.orderBy()); 
      $defer.resolve($scope.myValues); 
     } 
    }); 


    $scope.searchDocuments = function() 
    { 
     // some other logic 
    }; 
}); 

Update 2

Я сделал, как это для тестирования, но получить

<failure type="">TypeError: &apos;undefined&apos; is not a function (evaluating &apos;$defer.resolve($scope.myValues)&apos;) 

Тестовые

it('should check tableParams getData sorting', inject(function($q) { 
      var deferred = $q.defer(); 
      var promise = deferred.promise; 
      promise.then(function(result) { 
       expect(result).toEqual(expectedResult); 
      }); 
      $scope.myValues = [{name: "Moroni", age: 50}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}, 
       {name: "Tiancum", age: 43}, 
       {name: "Jacob", age: 27}, 
       {name: "Nephi", age: 29}, 
       {name: "Enos", age: 34}]; 

      $scope.getData(promise, $scope.tableParams); 
})); 

ответ

4

Вы можете:

Объявляет функцию GetData на диспетчерское $ scope, что делает его доступным в y наш тест:

$scope.tableParams = new ngTableParams({ 
     sorting: { 
      name: 'asc'  
     } 
    }, { 
     getData: $scope.getData 
    }); 

$scope.getData = function($defer, params) { 
      $scope.myValues = $filter('orderBy')($scope.myValues, params.orderBy()); 
      $defer.resolve($scope.myValues); 
     } 

Inject $ q in beforeEach().

Создайте объект обещания, используя $ q.

Назначьте некоторые $ scope.myValues ​​для вашего модульного теста.

Объявление переменной, содержащей ожидаемый результат - это отсортированный массив $ scope.myValues. Затем:

promise.then(function(result){ 
    expect(result).toEqual(expectedResult); 
} 
$scope.getData(deferred , $scope.tableParams); 
+0

+1 Спасибо за повтор .... но обещаю объект, используя $ q ..... на самом деле я не получаю. ... –

+0

https://docs.angularjs.org/api/ng/service/$q – kihu

+0

Я обновил свой ответ с помощью тестовых примеров, но получив указанное исключение –