首页 > 解决方案 > 如何模拟dayjs时区

问题描述

我有一个函数可以将格式的日期转换为格式2021-06-07T07:28:55.69725+00:00的小时和分钟字符串07:28

export function getTime(dateTime: string) {
  return dayjs(dateTime).format("HH:mm");
}

目前我位于 UTC+5,所以这个函数对参数的答案2021-06-07T07:28:55.69725+00:0012:28. 我想测试函数的工作,但我需要模拟时区,以便在不同时区的机器上进行测试。我尝试了下一个代码,但它仍然返回12:28

import dayjs from "dayjs";
import timezone from 'dayjs/plugin/timezone';
dayjs.extend(timezone)

describe('Function getTime', () => {
  beforeEach(() => {
    dayjs.tz.setDefault('Europe/Moscow');
  })

  afterEach(() => {
    dayjs.tz.setDefault();
  })

  it('should return time in format hh:mm', () => {
    const dateTime = '2021-06-07T07:28:55.69725+00:00';
    expect(getTime(dateTime)).toEqual('10:28');
  })
})

标签: javascriptunit-testingmockingdayjs

解决方案


推荐阅读