我有此日志对象:const today = dayjs.utc(date).startOf("day")
我试着用笑话来嘲笑它,但无济于事。以下是我尝试过的方法:
jest.mock("dayjs", () => ({
extend: jest.fn(),
utc: jest.fn((...args) => {
const dayjs = jest.requireActual("dayjs");
dayjs.extend(jest.requireActual("dayjs/plugin/utc"));
return dayjs
.utc(args.filter((arg) => arg).length > 0 ? args : mockDate)
.startOf("day");
}),
startOf: jest.fn().mockReturnThis(),
}));
我也试过这个:
jest.mock("dayjs", () => ({
extend: jest.fn(),
utc: jest.fn((...args) => ({
startOf: jest.fn(() => {
const dayjs = jest.requireActual("dayjs");
dayjs.extend(jest.requireActual("dayjs/plugin/utc"));
return dayjs
.utc(args.filter((arg) => arg).length > 0 ? args : mockEventData)
.startOf("day");
}),
})),
}));
两者都不起作用。有人有什么建议吗?
3条答案
按热度按时间ny6fqffe1#
MockDate在这方面工作得很好,不需要大量的模拟代码。
https://www.npmjs.com/package/mockdate
请记得在测试后使用以下工具清除模拟:
MockDate.reset();
biswetbf2#
假设您试图创建一个一致的输出,而不考虑给定的日期参数,您可以像这样创建Node Module mock:
然后在
src
文件夹内的测试中,dayjs.utc
将始终使用模拟日期src/today.spec.js
example on github
laik7k3q3#
我使用插件customParseFormat,我只是这样嘲笑:
对我有用。