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

标签 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);
    });
});

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

最佳答案

您忘记将 Filter 添加到过滤器名称的末尾,因此 searchItems 将是 searchItemsFilter。这不是直观的,你只需要知道这一点。 Angular 像服务一样存储过滤器,但会在您传入的名称末尾添加 Filter

你会像这样注入(inject)一个过滤器:

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

  }
])

因此您可以使用以下方式模拟它:$provide.value('searchItemsFilter', mockSearchFilter);

关于angularjs - 如何在 Angular/Jasmine 中模拟自定义过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27361619/

相关文章:

angularjs - Angular Material 日期选择器始终打开

javascript - AngularJS Material 导入后无法正常工作

javascript - 在指令中访问编译后的模板

javascript - 以 Angular 分离 Controller 逻辑和工厂逻辑

javascript - Protractor - 按钮点击比预期更快地调用回调

javascript - 如何使requirejs与jasmine和blanketjs一起使用以实现代码覆盖率?

angular - 如何让 Jasmine 等待一个 promise 被解决或拒绝?

javascript - 未知提供商 : $rootscopeProvider <- $rootscope

javascript - Angular ng-view : show after hidden

jasmine - 如何为innerHTML元素编写 Jasmine 测试