Reactjs 如何模拟从第三方库导出的类?

Reactjs 如何模拟从第三方库导出的类?,reactjs,jestjs,Reactjs,Jestjs,我们正在使用Jest为React组件编写一些单元测试,我遇到了一个我似乎无法理解的问题。我们需要模拟来自第三方库的单个类,该库导出许多类。但是我们不想嘲笑所有的类,只是一个 // third-party-library export ClassA; export ClassB; export ClassC; 在本例中,我只想模拟ClassB。我想保持ClassA和ClassC不变(此文件中还有其他依赖于它的测试。我做错了什么?在深入挖掘jest文档和反复试验后,我找到了金块。以下是最终的测试用

我们正在使用Jest为React组件编写一些单元测试,我遇到了一个我似乎无法理解的问题。我们需要模拟来自第三方库的单个类,该库导出许多类。但是我们不想嘲笑所有的类,只是一个

// third-party-library
export ClassA;
export ClassB;
export ClassC;

在本例中,我只想模拟
ClassB
。我想保持
ClassA
ClassC
不变(此文件中还有其他依赖于它的测试。我做错了什么?

在深入挖掘jest文档和反复试验后,我找到了金块。以下是最终的测试用例代码:

// our-test-case.js
import { myHook } from '../hooks.js';

jest.mock('third-party-library', () => ({
  __esModule: true,
  ...jest.requireActual('third-party-library'), // This is the golden nugget.
  ClassB: class {
    ...mock implementation..
  }
});

it('mock ClassB', () => {
  const mystate = myHook();
  // ...implementation...
});
参考:

// our-test-case.js
import { myHook } from '../hooks.js';

// --- This isn't quite what I want (ClassA and ClassC are mocked)
// jest.mock('third-party-library');
// ---

// --- This also does not appear to work (ClassA and ClassC are still mocked)
// jest.mock('third-party-library', () => ({
//   __esModule: true,
//   ClassB: class {
//     ...mock implementation..
//   }
// });
// ---

it('mock ClassB', () => {
  const mystate = myHook();
  // ...implementation...
});
// our-test-case.js
import { myHook } from '../hooks.js';

jest.mock('third-party-library', () => ({
  __esModule: true,
  ...jest.requireActual('third-party-library'), // This is the golden nugget.
  ClassB: class {
    ...mock implementation..
  }
});

it('mock ClassB', () => {
  const mystate = myHook();
  // ...implementation...
});