我正在使用导入到组件中的第三方组件。 我想做的就是模拟该组件,这样我就可以控制测试组件,而不必测试第三方组件中的所有组件。
在我的组件中,我将该第三方组件传递给React.createRef()。然后,我用它来调用该第三方模块上的函数。 其上的功能之一是例如setInput()。 在下面的模拟中,我想从模拟中返回正确的createRef对象。 我也想在其上模拟setInput方法。我以为我可以像下面那样做。 但是无法弄清楚从模拟中传回的引用。
MyComponent.test.tsx
jest.mock("third-party-component", () => ({
default: () => <div>mocked</div>,
setInput: () => "test",
__esModule: true,
}));
在我的组件中,有一个change函数像这样调用第三方模块的ref。
onChange = (event: ChangeEvent<HTMLInputElement>): void => {
this.thirdPartyRef.current.setInput(event.target.value);
};