【问题标题】:Testing parameterized AngularJS filter in Jasmine在 Jasmine 中测试参数化 AngularJS 过滤器
【发布时间】:2014-02-04 16:21:52
【问题描述】:

我有一个带参数的过滤器:

{{'filter input' | filterName:arg1:arg2}}

我通常会测试一个过滤器:

it('should work',inject(function($filter){
    expect($filter('filterName')('filter input')).toEqual('whatever');
}));

如何在测试中包含额外的参数:arg1:arg2

【问题讨论】:

    标签: angularjs jasmine angularjs-filter


    【解决方案1】:

    我昨天自己也在想这个。我偶然发现了一篇向我展示的博客文章。在 AngularJS 中测试一个过滤器就像在 JavaScript 中测试一个函数。如果你有一个看起来像这样的过滤器:

    .filter('SomeFilter', function () {
            return function (arg1, arg2) {
              return arg1 + ' ' + arg2;
            }
    }
    

    你可以这样测试:

    it('should work', inject(function($filter) {
      var arg1 = 'hello';
      var arg2 = 'world';
    
      var someFilter = $filter('SomeFilter');
      var result = someFilter(arg1, arg2);
      expect(result).toBe(arg1 + ' ' + arg2);
    }));
    

    还有其他语法的东西。我刚刚找到我提到的关于testing filters in angularjs的博文

    【讨论】:

      【解决方案2】:

      其实很明显:

      it('should work',inject(function($filter){
          expect($filter('filterName')('filter input', 'arg1', 'arg2)).toEqual('whatever');
      }));
      

      【讨论】:

        猜你喜欢
        • 2015-09-21
        • 2016-12-04
        • 1970-01-01
        • 2014-01-10
        • 1970-01-01
        • 2016-02-14
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        相关资源
        最近更新 更多