如何在Angular / Jasmine中模拟自定义过滤器

时间:2014-12-08 15:48:40

标签: angularjs jasmine

我创建了一个自定义过滤器。每this post我在我的Jasmine中创建了以下内容......

beforeEach(module("workOrderManagerApp"));
var mockSearchFilter = function(text, tails, fillTailList) {
    return null;
};
beforeEach(function() {
    module(function($provide) {
        $provide.value('searchItems', mockSearchFilter);
    });
});

但是当我运行它时它仍然运行非模拟过滤器。我在这里错过了什么?

1 个答案:

答案 0 :(得分:5)

您忘记将Filter添加到过滤器名称的末尾,以便searchItemssearchItemsFilter。这不直观,您只需了解这一点。 Angular存储过滤器就像服务一样,但会在您传入的名称的末尾添加Filter

你会注入这样的过滤器:

.controller('MyController', [
  'searchItemsFilter', 
  function(searchItems) {

  }
])

所以你可以用$provide.value('searchItemsFilter', mockSearchFilter);

来嘲笑它