У меня есть компонент, который рендерит сторонний компонент. При рендеринге локально сохраняет ссылку на этот компонент в localApi
. Когда кнопка нажата, она вызывает функцию exportData
, которая возвращает некоторые данные в обратном вызове.
const MyComponent = () => {
let localApi = React.useRef() as any;
const submit = () => {
localApi.exportData((data) => {
// do something with data
})
}
return (
<>
<ThirdParty ref={(api) => localApi = api} fullVersion={true}/>
<button onSubmit={submit}>Submit</button>
</>
)
}
Проблема, с которой я сталкиваюсь, заключается в насмешке над ссылкой этого компонента ThirdParty в Jest. Поскольку мой макет не работает, при симуляции клика на кнопке выдается ошибка exportData is not defined
. Я пробовал следующее, но безрезультатно:
jest.mock("third-party", () => ({
default: (props: any) => {
// tslint:disable-next-line: no-shadowed-variable
const React = require("react");
console.log(props); // this only returns the `fullVersion = true` when
const MockThirdParty: React.FC = () => {
const exportData = (callBack) => {
callBack("Mock data");
}
return <div>Third Party Component</div>;
}
return <MockThirdParty/>;
},
__esModule: true,
}));
Как я могу go насчет того, чтобы насмехаться правильно?