使用时区偏移进行单元测试

时间:2018-03-23 18:27:34

标签: angular unit-testing momentjs karma-jasmine angular-moment

我使用时刻在角度5中使用了函数:

moment('2013-12-01', 'YYYY-MM-DD').utcOffset('America/Los_Angeles')
    .startOf('Day').format('YYYY-MM-DD HH:mm:ssZ') 

当我在我的本地进行测试时,它会给出一个我期待的正确响应,即-0800时间偏移。

当我们构建它时,它的投掷误差是+0000而不是-0800。

任何人都可以帮我解决如何测试这个功能吗?

1 个答案:

答案 0 :(得分:1)

根据我的理解from the documentationutcOffset 使用时区名称,例如“America / Los_Angeles”。为此,您必须使用moment.timezone

moment.tz('2013-12-01', 'America/Los_Angeles')
    .startOf('Day').format('YYYY-MM-DD HH:mm:ssZ') // 2013-12-01 00:00:00-08:00

您的代码有时会起作用,因为当您传递一个无法识别的字符串时,它会使用浏览器/环境时区的偏移量 - 因此,如果您拨打utcOffset('America/Los_Angeles')utcOffset('whatever'),则无关紧要,它将使用您的浏览器/环境的时区,有时它可以工作,有时不工作,具体取决于浏览器/环境的配置方式。