【发布时间】:2015-12-07 22:45:24
【问题描述】:
我想为使用moment.js 创建的日期过滤器编写单元测试。
例如
app.filter('timeFormat', function () {
return function (date) {
return moment(date).format("LT");
};
});
测试上述过滤器的最佳方法是什么?
下面的测试看起来不错吗?还是我必须模拟时刻功能?如果是这样,我们如何才能做到这一点?
describe('Filter: timeFormat', function () {
'use strict';
var $filter;
beforeEach(module('someApp'));
beforeEach(inject(function (_$filter_) {
$filter = _$filter_;
}));
it('should return time in localized time format', function () {
var filterTime = $filter('timeFormat');
var date = new Date();
var expectedTime = "5:46 AM";
date.setHours(5);
date.setMinutes(46);
expect(filterTime(date)).toEqual(expectedTime);
expectedTime = "2:34 PM";
date.setHours(14);
date.setMinutes(34);
expect(filterTime(date)).toEqual(expectedTime);
expectedTime = "12:59 PM";
date.setHours(12);
date.setMinutes(59);
expect(filterTime(date)).toEqual(expectedTime);
expectedTime = "11:59 PM";
date.setHours(23);
date.setMinutes(59);
expect(filterTime(date)).toEqual(expectedTime);
});
});
【问题讨论】:
-
您的测试对我来说看起来不错。我唯一不喜欢的是你在一个测试中有多个断言。
标签: angularjs unit-testing jasmine momentjs