Angular 单元测试 - 如何模拟系统时钟时区

spi*_*ala 9 jasmine momentjs karma-jasmine angular moment-timezone

如何在 Karma/Jasmine 的 Angular 单元测试中模拟将系统时钟设置为另一个时区。

我正在开发一个自定义日期时间选择器组件。它有一个错误,只有在不同时区使用它时才能重现。为了为修复编写适当的单元测试,我想模拟完全相同的情况。

我可以通过在 Windows 设置中手动切换系统时钟来重现该错误:

例如 在此输入图像描述

现在我想将系统时间开关移至单元测试中,以模拟组件在不同时区的行为。

我尝试像这样使用 jasmine.clock : jasmine.clock().mockDate(moment.tz("2020-10-09 10:00:00", "Asia/Bangkok").toDate());

但它并没有像改变系统时钟那样真正改变时区。茉莉花时钟确实会改变时间,但它保留在系统的时区(即中欧时间)。