Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
AngularJS-$filter不在全局范围内_Angularjs_Filter_Angularjs Scope_Angularjs Filter - Fatal编程技术网

AngularJS-$filter不在全局范围内

AngularJS-$filter不在全局范围内,angularjs,filter,angularjs-scope,angularjs-filter,Angularjs,Filter,Angularjs Scope,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(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的更新版本。

您可以使用
$filter('date')
通过在实际测试存根之前注入
$filter
模块来获取
日期
过滤器。我为您创建了一个工作演示,请查看所需的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');
        });
    });
});

您可以使用
$filter('date')
通过在实际测试存根之前注入
$filter
模块来获取
日期
过滤器。我为您创建了一个工作演示,请查看所需的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');
        });
    });
});

我是否需要resource.js文件才能显示
angular.mock.module
?@TravisParks您不需要它。:)我是为了别的事才写的,我试过了。我之前遇到一个问题,由于某种原因,
angular.mock
下找不到
module
。我会再试一次。稍微拨弄一下,它看起来像
angular.mock.module
只有在使用Jasmine时才存在。我将Mocha与Chai's expect一起使用。在1.1.1版本之后,Mocha得到了支持,但它还不是稳定版本的一部分。我想我会换成茉莉花。。。老实说,它们几乎完全相同。我需要resource.js文件才能显示
angular.mock.module
?@TravisParks您不需要它。:)我是为了别的事才写的,我试过了。我之前遇到一个问题,由于某种原因,
angular.mock
下找不到
module
。我会再试一次。稍微拨弄一下,它看起来像
angular.mock.module
只有在使用Jasmine时才存在。我将Mocha与Chai's expect一起使用。在1.1.1版本之后,Mocha得到了支持,但它还不是稳定版本的一部分。我想我会换成茉莉花。。。老实说,它们几乎一模一样。