【问题标题】:Mocking moment format with timezone in jest开玩笑的时区模拟时刻格式
【发布时间】:2020-12-04 10:45:30
【问题描述】:

我正在测试一个基于时区格式化日期的服务,它运行良好,但是当我运行测试时,我收到了错误: moment_timezone_1.default(...).utcOffset(...).format is not a function

我已经尝试过在 StackOverflow 中看到的不同方法进行开发,但是它们都不起作用,错误消息发生了变化(例如,拆分不是函数)。

我可以做些什么来为我的案例正确地模拟这一刻,或者在不模拟但显然有效的情况下利用这一刻?

这里是给出错误的函数:


export function formatTimezone(date, timezone = '+00:00', format = '') {
    return moment(date)
        .utcOffset(timezone)
        .format(format);
}

【问题讨论】:

  • 你试过这个吗:medium.com/front-end-weekly/…
  • 是的,当我这样做时,错误会发生变化:TypeError: Cannot read property 'split' of undefined

标签: javascript node.js jestjs nestjs


【解决方案1】:

根据the docs utcOffset(timezone) 在没有提供参数时返回偏移量(一个数字)。当提供null 时,它似乎也会这样做 - 见下文。

console.log(moment().utcOffset(0).format())
console.log(moment().utcOffset(null).format())
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.27.0/moment.min.js"></script>

在调用.format() 之前,您需要验证时区输入以确保utcOffset 没有返回数字。

【讨论】:

  • 哦,天哪...我指向错误的方向,这个函数出错了!非常感谢,我的朋友。
猜你喜欢
  • 2019-10-18
  • 1970-01-01
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
相关资源
最近更新 更多