1

我正在尝试为我在 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变量,所以我知道正确包含了 angular。

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

4

1 回答 1

1

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

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

Demo

于 2013-08-15T21:18:06.690 回答