我正在为我的AngularJS应用程序用karma和jasmine编写一些单元测试。我也在使用momentjs。
当我从浏览器中的时刻库中调用相同的函数时,我得到的结果与业力单元测试不同。
这打破了我的单元测试。
在浏览器中,这是我得到的:
在我的单元测试中,我得到了不同的结果。例如,当我调用函数来获取月份和周的开始时,我得到'1'而不是53的周数。
Calendar.data.currentCalendarMonth = moment('01-01-2017', dateFormat).clone().startOf('month');
//showing different results than in the browser
console.log(Calendar.data.currentCalendarMonth.format());
console.log(' week ', Calendar.data.currentCalendarMonth.week());
这是我的codepen与再现的bug:https://codepen.io/aubz/pen/VNQjgV
编辑:我在我的项目中使用这些时刻依赖项:
"moment-timezone": "0.5.4",
'moment/min/moment-with-locales.js',
'moment-timezone/builds/moment-timezone-with-data.js',
问题是我的应用程序使用了en-us,单元测试使用了en-gb。我必须在单元测试中明确设置区域设置。
beforeEach(inject(function (_Calendar_) {
Calendar = _Calendar_;
Calendar.clear();
moment.locale('en-gb');
}));