我试图为使用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');
};
此时我不确定这种方法是否正确和/或我是否应该在这里测试这些东西。
提前致谢!
答案 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');
将片刻转移到片刻创建函数将克隆它,防止startOf
和endOf
改变原始值。