创建文件vitest.global-setup.ts
export const setup = () => {
process.env.TZ = 'UTC'
}
Run Code Online (Sandbox Code Playgroud)
然后将其添加globalSetup到vitest.config.ts
export default defineConfig({
test: {
globalSetup: './vitest.global-setup.ts',
// ...
},
Run Code Online (Sandbox Code Playgroud)
(在这个 GitHub 评论中找到了解决方案)
您不能直接“模拟”时区。最接近的方法是在运行 vitest 时设置 TZ 环境变量。
例如:TZ=UTC vitest
我将其保存在 package.json 中作为脚本,然后像这样执行该脚本:
{
scripts: {
test: "TZ=UTC vitest"
}
}
Run Code Online (Sandbox Code Playgroud)
然后就跑吧,yarn test这样我就不用考虑它了。这给了我确定性的时区。这加上 avi.setSystemTime应该可以满足您的需求。
如果您需要测试不同的时区,我认为在测试本身中不可能做到这一点。您必须使用不同的环境变量多次运行 vitest。
有关更多信息,请参阅此问题:https ://github.com/vitest-dev/vitest/issues/1575
vi.setSystemTime:https://vitest.dev/api/vi.html#vi-setsystemtime