【问题标题】: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');
}));