Насмешливый обратный звонок в Jest - PullRequest
0 голосов
/ 10 февраля 2020

У меня есть компонент, который рендерит сторонний компонент. При рендеринге локально сохраняет ссылку на этот компонент в 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 насчет того, чтобы насмехаться правильно?

...