【发布时间】:2021-03-05 06:06:16
【问题描述】:
我有一个如下所示的实用函数:
const getTimezoneString = (): string => {
return Intl.DateTimeFormat().resolvedOptions().timeZone;
};
由于此功能是可在多个新/旧浏览器上运行的应用程序的一部分,因此我想测试 Intl 对不同平台的支持。
我正在寻找一种方法来全局定义 Intl 对象的模拟实现,以便当我执行以下操作时:
expect(getTimezoneString()).toEquall("Africa/Nirobi")
同样,我会在实现中更改时区并测试我的函数是否返回新时区。
我还想测试一下,如果浏览器不支持 Intl 对象会发生什么。即可能返回未定义或抛出错误。
我一直在使用 jest mockImplementation 方法来创建一个返回所需输出的模拟:
const IntlDateTimeFormatMock = jest
.fn(Intl.DateTimeFormat)
.mockImplementation(() => undefined);
有没有办法让这个模拟函数在我调用我的实用程序时自动替换 Intl 的输出?
【问题讨论】:
标签: javascript unit-testing jestjs