AngularJS - 使用moment.js的Controller上的单元测试

时间:2015-05-04 13:58:14

标签: angularjs unit-testing jasmine momentjs

我试图为使用moment.js来处理一周三个日期的控制器进行单元测试。我的测试框架是jasmine,我的AngularJS版本是v1.3.15

基本上我有一个设置它们的init()函数,我想检查它们是否都在控制器中正确设置。

var myController = this;

myController.init = function () {
    myController.currentDate = moment().format('DD-MM-YYYY');
    myController.startOfWeek = moment(currentDate).startOf('week').format('DD-MM-YYYY');
    myController.endOfWeek = moment(currentDate).endOf('week').format('DD-MM-YYYY');
};

此时我不确定这种方法是否正确和/或我是否应该在这里测试这些东西。

提前致谢!

1 个答案:

答案 0 :(得分:1)

您不应该将currentDate传递回创建时刻功能。这样做将调用解析,将回退到浏览器的实现(给出弃用警告),如果浏览器的语言环境与您格式化的语言环境不同,则会失败。

每次只调用moment()

myController.currentDate = moment().format('DD-MM-YYYY');
myController.startOfWeek = moment().startOf('week').format('DD-MM-YYYY');
myController.endOfWeek = moment().endOf('week').format('DD-MM-YYYY');

或者,如果您愿意,您只需捕获当前时间一次,然后克隆每个功能的那一刻。

var now = moment();
myController.currentDate = now.format('DD-MM-YYYY');
myController.startOfWeek = moment(now).startOf('week').format('DD-MM-YYYY');
myController.endOfWeek = moment(now).endOf('week').format('DD-MM-YYYY');

将片刻转移到片刻创建函数将克隆它,防止startOfendOf改变原始值。