AngularJS-$filter不在全局范围内



我正试图为我在Angular(1.0.7)中编写的过滤器编写一个单元测试。这个过滤器在实际页面上工作,所以我知道它正在正确注册。但我想为它写一个单元测试

var application = angular.module('Customer', []);    
application.filter('date', function () {
    return function (date) {
        return moment(date).format('MM/DD/YYYY');
    };
});

在测试页面的顶部,我包含angular.js文件。

<script type="text/javascript" src="../angular.js"></script>

假定有一个$filter函数用于检索已注册的筛选器。我的调试器只是吓坏了,说它不在那里。我可以看到实际的angular变量,所以我知道角度被正确地包括在内。

我想知道我是否缺少一个.js文件,或者$filter是否在不同的范围或angular的更新版本中。

您可以使用$filter('date')通过在实际测试存根之前注入$filter模块来获得date过滤器。我为您创建了一个工作演示,请查看所需的JS文件。

describe('date', function () {
    var dataFilter;
    beforeEach(angular.mock.module('Customer'));
    beforeEach(function () {
        angular.mock.inject(function ($filter) {
            dataFilter = $filter('date');
        })
    });
    describe('date result', function () {
        it('should return filtered date', function () {
            var date = new Date(2013, 7, 15);
            expect(dataFilter(date)).toBe('08/15/2013');
        });
    });
});

演示

最新更新