为什么 jest 的clearAllMocks 不起作用以及如何清除 jest 间谍的模拟?

Dav*_*ave 6 mocking spy reactjs jestjs

我正在将 jest 4.2.4 与我的 React 16.13.0 应用程序一起使用。我已经设置了这种类型的模拟...

  jest.spyOn(ReduxFirebase, "getFirebase").mockReturnValue({
    firestore: jest.fn(() => ({ collection: jest.fn(() => collection) })),
  });
Run Code Online (Sandbox Code Playgroud)

我如何在测试之间清除这个?我尝试过这个...

describe("User", () => {
  afterEach(() => {
    jest.clearAllMocks();
  });
Run Code Online (Sandbox Code Playgroud)

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

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

不取(原来的间谍还在原地。

小智 6

这应该可以完成这项工作:

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


Dan*_*alà 6

你可以试试

afterEach(() => {
    jest.restoreAllMocks();
  });
Run Code Online (Sandbox Code Playgroud)