Angularjs 具有筛选器依赖关系的测试指令

Angularjs 具有筛选器依赖关系的测试指令,angularjs,angularjs-directive,tdd,jasmine,Angularjs,Angularjs Directive,Tdd,Jasmine,我想测试一个指令,它有一个过滤器依赖项。我想注入实际的过滤器,而不是使用模拟 这是我之前的模拟。如何注入实际的过滤器?我已经尝试将注入作为注入函数的一部分,但这似乎不起作用 beforeEach(function() { // filter mock someFilterMock = function(value) { return value; }; // get app module('app'); // get html

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

这是我之前的模拟
。如何注入实际的
过滤器
?我已经尝试将注入作为
注入函数的一部分,但这似乎不起作用

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();
    });

});
beforeach(函数(){
//过滤器模拟
someFilterMock=函数(值){
返回值;
};
//获取应用程序
模块(“应用程序”);
//获取html模板
模块(“模板”);
//将过滤器更换为模拟过滤器
模块(功能($提供){
$provide.value('someFilterFilter',someFilterMock');
});
//注入与编译
注入(函数($rootScope,$compile){
//创建范围
scope=$rootScope.$new();
//使用指令创建元素
元素=角度。元素(“”);
$compile(元素)(范围);
范围。$digest();
});
});

我在测试中做了类似的事情:

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

也许它确实有用?

实际的someFilterFilter驻留在哪里(模块)?它包含在karma配置中吗?它是
angular.module('app')
的一部分,它包含在karma中,我正在加载所有文件。有什么方法可以验证吗?在chrome上运行karma,在karma.conf.js上设置singleRun:false,并在chrome开发工具的源选项卡上查找您的代码。@Werlang-非常好的提示!谢谢你。如果提供了指令/过滤器代码,是否有方法进行单元测试?i、 expect(directive).toBeDefined()过滤器的可能副本将使用您提供的方法进行自己的单元测试。但OP表示他想测试指令,而不是过滤器。过滤器在指令模板中使用,因此需要提供给指令。