Jestjs 我怎么能只模拟一次测试的时刻呢?

Jestjs 我怎么能只模拟一次测试的时刻呢?,jestjs,Jestjs,我在descripe(…)中运行了许多测试,但我只想为其中一个模拟时刻。为了模拟这一时刻,我使用: jest.mock("moment", () => { return () => jest.requireActual("moment")("2020-01-01T00:00:00.000Z"); }); 如果我像这样将其放在文件顶部,模拟将应用于所有测试: jest.mock("moment",

我在
descripe(…)
中运行了许多测试,但我只想为其中一个模拟
时刻。为了模拟这一时刻,我使用:

jest.mock("moment", () => {
    return () => jest.requireActual("moment")("2020-01-01T00:00:00.000Z");
});
如果我像这样将其放在文件顶部,模拟将应用于所有测试:

jest.mock("moment", () => {
    return () => jest.requireActual("moment")("2020-01-01T00:00:00.000Z");
});

describe("test1", () => {
    ....
});

describe("test2", () => {
    ....
});
我尝试在
test2
中的
之前添加它。奇怪的是,模拟根本不适用于任何测试,我仍然在调用测试中的真实时刻

describe("test1", () => {
    ....
});

describe("test2", () => {
    beforeEach(() => {
        jest.mock("moment", () => {
            return () => jest.requireActual("moment")("2020-01-01T00:00:00.000Z");
        });
    });

    if("test within test2", () =>? {
        ...
    })
});

使用mock是全部还是全部不使用?我是否需要把我的测试放到另一个测试文件中,或者是把它应用到测试的一个子集?

或者你考虑Time一个合作者或实现的一部分,你不应该为了测试而嘲笑它,而不应该为测试中的相同代码而嘲笑其他人。事实上,我建议不要嘲笑它;这是一个复杂的API,你没有。相反,将时间视为一个依赖项,这样您就可以模拟您自己的一个简单函数,该函数返回一个
日期
(参见示例)。