首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在AngularJS 1.x中对过滤器进行单元测试

如何在AngularJS 1.x中对过滤器进行单元测试
EN

Stack Overflow用户
提问于 2014-01-13 23:08:05
回答 4查看 34.7K关注 0票数 69

如何在Angular中对过滤器进行单元测试?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2014-01-13 23:29:53

注入$filter,然后用$filter('filterName')(input, options);调用它

因此,要测试此模板{{ foo | testFilter:capitalize }}的等价物

代码语言:javascript
复制
describe('The test filter', function () {
  'use strict'; 

  var $filter;

  beforeEach(function () {
    module('myTestFilterModule');

    inject(function (_$filter_) {
      $filter = _$filter_;
    });
  });

  it('should capitalize a string', function () {
    // Arrange.
    var foo = 'hello world', result;

    // Act.
    result = $filter('testFilter')(foo, 'capitalize');

    // Assert.
    expect(result).toEqual('HELLO WORLD');
  });
});
票数 121
EN

Stack Overflow用户

发布于 2014-01-13 23:33:42

您可以注入$filter并加载要测试的筛选器。然后,通过注入的过滤器传递要过滤的参数,然后“期望”得到所需的内容。下面是一个示例:

代码语言:javascript
复制
describe('Filter test', function(){

  var filter;

  beforeEach(function(){
    module.apply(moduleName);

    inject(function($injector){
      filter = $injector.get('$filter')('nameOfTheFilter');
    });
  });

  it('should filter the parameters passed', function(){
    expect(filter(parameterToBeFiltered)).toBe(Result);
  });
});
票数 12
EN

Stack Overflow用户

发布于 2014-11-14 15:43:26

过滤器可以直接注入到测试中(我找到了一个代码片段here)

代码语言:javascript
复制
  describe('myApp', function () {

    beforeEach(function () {
      module('myApp');
    });

    it('has a bool filter', inject(function($filter) {
      expect($filter('bool')).not.toBeNull();
    }));

    it("should return true empty array ", inject(function (boolFilter) {
      expect(boolFilter(true)).toBeTruthy();
    }));

  });

在此示例中,筛选器名称为'bool',为了注入此筛选器,应使用'bool‘+ ' filter’= 'boolFilter‘

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21094569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档