具有筛选器的AngularJS测试指令

具有筛选器的AngularJS测试指令,angularjs,testing,angularjs-directive,karma-runner,angularjs-filter,Angularjs,Testing,Angularjs Directive,Karma Runner,Angularjs Filter,我已经开始使用karma并尝试测试我的代码。虽然我已经创建了通用函数,并且能够测试函数和过滤器,但是使用指令是可行的,但是我不知道如何测试它 angular.module('myUtils').filter('Cents', function($filter) { var CentsFilter = $filter('cents'); return function(Input) { var Amount = 0; if ( (Number(Inp

我已经开始使用karma并尝试测试我的代码。虽然我已经创建了通用函数,并且能够测试函数和过滤器,但是使用指令是可行的,但是我不知道如何测试它

angular.module('myUtils').filter('Cents', function($filter) {
    var CentsFilter = $filter('cents');
    return function(Input) {
        var Amount = 0;
        if ( (Number(Input) === Input) && (Input % 1) === 0) {          // Integer
            Amount = Input / 100;
        } else if ( (Number(Input) === Input) && ( (Input % 1) !== 0) ) {   // Float
            Amount = Input;
        } else {
            if ( isNaN(Input) ) {
                Amount = parseInt(Input);
            } else {
                Amount = Input;
            }
        }
        return CentsFilter(Amount);
    };
});

angular.module('myUtils').directive('myCents',
    function($filter) {
        return {
            restrict: 'A',
            require: '^ngModel',
            link: function($scope, element, attrs, ngModelControl) {
                var myCentsFilter = $filter('Cents');

                ngModelControl.$formatters.push(function(value) {
                    return myCentsFilter(value);
                });

                ngModelControl.$parsers.push(function(value) {
                    if ( value[0] == '$'    ) {
                        value = value.substr(1);
                    }

                    if (    value.indexOf('.') !== -1 ) {           // Contains a decimal, convert to cents
                        return Math.round(value * 100);
                    } else {                                        // No decimal, assume cents already
                        return parseInt(value);
                    }
                });
            }
        };
    }
);
我有通过过滤器的测试,但不知道如何测试这个指令部分

describe('myCents Filter', function() {
    var Filter;
    beforeEach(module('SLS_Utilities'));

    describe('Currency Filter - Return values are Dollar Amounts', function() {
        var Filter;

        beforeEach(inject(function(_$filter_){
            Filter = _$filter_;
        }));

        it('myCents filter exists', function() {
            assert.isNotNull(Filter('myCents'));
        });

        it('should return the value $1.23 when passed 123', function() {
            assert.deepEqual('$1.23', Filter('myCents')(123));
        });

        it('should return the value 123 when passed "123 ABC"', function() {
            assert.deepEqual('$123.00', Filter('myCents')('123 ABC'));
        });

        it('should return the value 123 when passed "123"', function() {
            assert.deepEqual('$123.00', Filter('myCents')("123"));
        });

        it('should return "" when not a number', function () {
            assert.deepEqual('', Filter('myCents')('ABC'));
        });

        it('should return $123.45 when passed 123.45', function() {
            assert.deepEqual('$123.45', Filter('myCents')(123.45));
        });

    });

});
这些测试将通过。我需要知道如何测试指令,以查看我期望的正确结果,即从货币到美分再到美分的转换

我看过一些简单的例子,但这是一个真实的例子,我看不懂如何测试,因为这不是教程中显示的简单字段替换