单元测试用作过滤器的范围函数

时间:2017-02-18 20:24:17

标签: angularjs filter scope karma-runner karma-jasmine

我需要在我的控制器中编写一个作为过滤器的作用域函数。

  $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>

我面临的麻烦是如何在karma-jasmine中测试这个特定的例程。

我目前的测试看起来像这样,

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 个答案:

答案 0 :(得分:1)

最好使用实际范围进行测试,除非知道它不是:

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

filterResults应该返回一个函数。所以它是

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