#reactjs #callback #jestjs #graphql #enzyme
Вопрос:
Это родительский компонент updateFindingStatus
, у которого есть метод, ответственный за вызов мутации graphql:
export default function ActionBox() {
const { markFindingAsFixed } = findingMutations;
const [markFindingAsFixedMutation] = useMutation(markFindingAsFixed, {
onCompleted(data) {
const updatedStatus = data.markFindingAsFixed.workflowStatus;
handleToastOpen();
},
});
const updateFindingStatus = () => {
console.log("Function Invoked");
markFindingAsFixedMutation({
variables: {
input: findingID,
},
});
};
return (
<div>
<TakeActionMenuButton updateFindingStatus={updateFindingStatus} />
</div>
);
}
Это дочерний компонент, который обладает свойством updateFindingStatus
обратного вызова метода с тем же именем в родительском компоненте
export function TakeActionMenuButton({ updateFindingStatus }: TakeActionMenuButtonProps) {
const takeFindingAction = () => {
updateFindingStatus();
};
return (
<>
<Button
onClick={takeFindingAction}
>
MARK AS FIXED
</Button>
</>
);
}
И это определение типа для TakeActionMenuButtonProps
:
export type TakeActionMenuButtonProps = {
updateFindingStatus: Function;
};
Я использую Enzyme
и Jest
для тестирования своих компонентов изолированно с помощью shallow
рендеринга. Мой вопрос в том, как мне проверить, что updateFindingStatus
метод в родительском был вызван при нажатии кнопки в дочернем?
Комментарии:
1. При тестировании дочерний элемент утверждает, что вызывается переданный обратный вызов. При тестировании родителя издевайтесь над дочерней кнопкой, чтобы использовать шпиона для
onClick
обработчика, и утверждайте, что был вызван шпион.2. Спасибо за комментарии, я понимаю, что первая часть утверждает, что вызывается переданный обратный вызов. Не могли бы вы поделиться примерным фрагментом кода для тестирования родительского компонента?