angularjs - 具有过滤器依赖性的测试指令

标签 angularjs angularjs-directive tdd jasmine

我想测试一个具有过滤器依赖项的指令。我想注入(inject)实际的过滤器,而不是使用模拟。

这是我的 mock beforeEach .我该如何注入(inject)实际 filter ?我尝试将注入(inject)作为 inject function 的一部分,但这似乎不起作用。

beforeEach(function() {

    // filter mock
    someFilterMock = function(value) {
        return value;
    };

    // get app
    module('app');
    // get html templates
    module('templates');

    // replace filter with a mock
    module(function($provide) {
        $provide.value('someFilterFilter', someFilterMock);
    });

    // inject & compile
    inject(function($rootScope, $compile) {
        // create scope
        scope = $rootScope.$new();
        // create element using directive
        element = angular.element('<this-is-directive />');
        $compile(element)(scope);
        scope.$digest();
    });

});

最佳答案

我在我的测试中做这样的事情:

it('uses a filter', inject(function ($filter) {
    var result = $filter('filterName')(params);
    expect(result).toBe('something');
}));

也许它有帮助?

关于angularjs - 具有过滤器依赖性的测试指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26996054/

相关文章:

oop - 我的 DDD 逻辑属于哪里?

javascript - 使用注入(inject)的 Controller 清除注销数据(Angular)

javascript - 错误: text.替换不是angularjs过滤器中的函数,如何解决这个问题?

javascript - 注入(inject)由 module.provider 定义的服务

javascript - 如何使用 $interpolate 函数从 JSON 添加动态指令名称

javascript - 如何在 AngularJS 中的某些事件完成后删除绑定(bind)在 html 元素内的动态数据

angularjs - 如何在指令内访问 angularjs 中的 Controller 变量?

javascript - Internet Explorer,表单验证中的 ng-pattern 和输入类型 "number"

unit-testing - 我如何在 Node.js 中构造 TDD?

javascript - 使用 Chai - 如何检查对象属性是否包含 DOM 元素