如何在Angular中对过滤器进行单元测试?
发布于 2014-01-13 23:29:53
注入$filter
,然后用$filter('filterName')(input, options);
调用它
因此,要测试此模板{{ foo | testFilter:capitalize }}
的等价物
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');
});
});
发布于 2014-01-13 23:33:42
您可以注入$filter并加载要测试的筛选器。然后,通过注入的过滤器传递要过滤的参数,然后“期望”得到所需的内容。下面是一个示例:
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);
});
});
发布于 2014-11-14 15:43:26
过滤器可以直接注入到测试中(我找到了一个代码片段here)
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‘
https://stackoverflow.com/questions/21094569
复制相似问题