2017-02-18 45 views
1

Мне нужно написать ограниченную функцию внутри моего контроллера, которая действует как фильтр.Узел тестирования функции области, используемой в качестве фильтра

$scope.filterR = function(s) { 

    return function(c) { 
     for (var prop in c) { 
      if (c[prop].toSomething() >= 0) { 
      return c; 
      break; 
      } 
     } 
    } 
    } 

Вот как я его использую.

<div ng-repeat="c in cus | filter: filterR(s)"> 
     </div> 

Проблема, с которой я столкнулся, - это проверить эту специфическую рутину в карма-жасмине.

Мой текущий тест выглядит так,

describe('check x', function() { 
    it('check abc', function() { 
     var $scope = {}; 

     var controller = $controller('SController', { 
     $scope: $scope 
     }); 
     expect($scope.filterResults('some_data')).toEqual(
     some_data 
     ); 
    }); 

фильтр работает нормально, но писать тест на это дает мне вопрос. Любая помощь приветствуется.

ответ

1

Это всегда предпочтительнее использовать реальные области для тестирования, если оно не известно, что это не так:

var $scope = $rootScope.$new(); 

filterResults ожидается возвращение функции. Таким образом, это

var filterResultsFn = $scope.filterResults('some_data'); 
expect(filterResultsFn).toEqual(jasmine.any(Function)); 
expect(filterResultsFn(...)).toEqual(...);