我正在尝试为我在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
是在不同的范围内还是更新版本的角度。
答案 0 :(得分:1)
您可以使用$filter('date')
通过在实际测试存根之前注入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');
});
});
});
的 Demo 强>