AngularJS - 对使用 moment.js 的控制器进行单元测试
AngularJS - Unit tests on Controller that uses moment.js
我正在尝试对使用 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');
};
此时我不确定这种方法是否正确and/or我是否应该在这里测试这些东西。
提前致谢!
您不应该将 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
改变原始值。
我正在尝试对使用 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');
};
此时我不确定这种方法是否正确and/or我是否应该在这里测试这些东西。
提前致谢!
您不应该将 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
改变原始值。