momentjs在浏览器中返回的结果与在karma单元测试中返回的结果不同

问题描述 投票:0回答:1

我正在为我的AngularJS应用程序用karma和jasmine编写一些单元测试。我也在使用momentjs。

当我从浏览器中的时刻库中调用相同的函数时,我得到的结果与业力单元测试不同。

这打破了我的单元测试。

在浏览器中,这是我得到的:

enter image description here

在我的单元测试中,我得到了不同的结果。例如,当我调用函数来获取月份和周的开始时,我得到'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());

enter image description here

这是我的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',
javascript unit-testing momentjs karma-jasmine
1个回答
0
投票

问题是我的应用程序使用了en-us,单元测试使用了en-gb。我必须在单元测试中明确设置区域设置。

beforeEach(inject(function (_Calendar_) {
    Calendar = _Calendar_;
    Calendar.clear();
    moment.locale('en-gb');
}));
© www.soinside.com 2019 - 2024. All rights reserved.