为什么开玩笑的清除所有模拟不起作用,我如何清除开玩笑间谍的模拟?



我在React 16.13.0应用程序中使用了jest 4.2.4。我已经设置了这种类型的模拟。。。

jest.spyOn(ReduxFirebase, "getFirebase").mockReturnValue({
firestore: jest.fn(() => ({ collection: jest.fn(() => collection) })),
});

如何在两次测试之间清除此问题?我试过这个。。。

describe("User", () => {
afterEach(() => {
jest.clearAllMocks();
});

但它不起作用。稍后在测试套件中设置

jest.spyOn(ReduxFirebase, "getFirebase").mockReturnValue({
firestore: jest.fn(() => ({ collection: jest.fn(() => collection2) })),
});

没有采取(原来的间谍仍然在原地。

这应该完成任务:

const getFirebaseMock = jest.spyOn(ReduxFirebase, "getFirebase").mockReturnValue({
firestore: jest.fn(() => ({ collection: jest.fn(() => collection) })),
});
getFirebaseMock.mockRestore();

您可以尝试

afterEach(() => {
jest.restoreAllMocks();
});