你如何在AngularJS中过滤另一个过滤器的过滤器?

时间:2014-11-13 17:56:44

标签: angularjs unit-testing filter

我正在尝试对过滤器进行单元测试。此过滤器依赖于另一个过滤器。我一直无法模仿这个过滤器。我已经看到了为控制器模拟过滤器的方法,我已经看到了单独测试过滤器的方法,但不是这样。我试过简单地提供模拟过滤器无济于事:

// compacted for brevity
var someService = {};
var injectedFilter = function(input) { return output; }
beforeEach(function() {
    // inject mocked dependencies
    module(function ($provide) {
        $provide.value('someService', someService);
        $provide.value('injectedFilter', injectedFilter); // with Filter suffix
        ...

我已尝试通过$filterProvider.register破坏过滤器,但似乎没有效果。我甚至尝试使用Jasmine的spyOn.and.callFake来模拟它,但因为语法是filter("name")并且它不对某个对象进行操作,它会失败。

为另一个滤镜选择过滤器的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试使用$provide.factory

$provide.factory('injectedFilter', injectedFilter);

与使用$filterProvider.register完全相同:

$filterProvider.register('injected', injectedFilter);