2017-02-18 72 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(...);