2017-02-18 15 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(...); 
関連する問題