Вы пытались издеваться useMutation
? Похоже, что путем насмешки useMutation
и последующей замены вашей собственной реализации, которая возвращает все, что вы хотите в своем наборе тестов, вы могли бы утверждать определенные типы сценариев ios.
Я бы предположил, что вы можете передать в mock функции для успеха / неудачи затем макетируют useMutation
для выполнения различных действий, таких как запуск этих фиктивных функций или возврат определенных данных.
Это весь псевдокод, который я не тестировал, но, возможно, он укажет вам правильное направление:
import { useMutation } from "@apollo/react-hooks";
jest.mock("@apollo/react-hooks");
describe("something", () => {
test("should work", () => {
const successMock = jest.fn();
const failureMock = jest.fn();
const updateProfileMock = jest.fn();
// TODO: change the implementation to trigger things like
// firing success or error
useMutation.mockImplementationOnce(updateProfileMock);
const { handleSubmit } = updateFormHandler({
onSuccess: successMock,
onFailure: failureMock,
});
handleSubmit(
// Fake event data which you could use to assert against
{
target: {
emailId: "some-id",
newPasswordId: "some-pw",
firstName: "first-name",
lastName: "last-name",
birthday: "birthday",
},
},
"digital-id",
"version-here"
);
expect(updateProfileMock).toBeCalled();
// TODO: assert that updateProfileMock was called with the right data
});
});
Вы также можете смоделировать функцию updateFormHandler
в ваших компонентах. таким же образом и передайте имитаторы и данные для утверждения.
Надеюсь, это поможет ??