0

I created a hook

export function useRedirectStartParams() {
    const scenarios: IScenario[] = useSelector(scenariosSelector);
    const block: IBlockItem = useSelector(selectedBlockSelector);

    const [redirects, setRedirects] = useState<IDropdownEl[]>([]);

    useEffect(() => {
        const newRedirects =
            block?.block_data?.redirects?.map((block: any) => {
                const scenarioName = scenarios.find(
                    (scenario) => scenario.id === block.scenario_id
                )?.name;
                return {
                    name: scenarioName,
                    val: {
                        scenarioId: block.scenario_id,
                        blockId: block.id,
                    },
                };
            }) || [];
        setRedirects(newRedirects);
    }, [block, scenarios]);
    return { redirects };
}

use it in my component


const { redirects } = useRedirectStartParams();

and then try to test it with jest like this

import { useRedirectStartParams } from "@hooks/useRedirectStartParams";
jest.mock("@hooks/useRedirectStartParams");

beforeEach(() => {
useRedirectStartParams.mockReturnValueOnce({
redirects: [{ name: "ad", val: "123" }],
  });
})

but got error that redirects are undefined.

I also tried to mock hook this way

jest.mock("@hooks/useRedirectStartParams", () => jest.fn());

And it didn't help me

I expect that redirects won't be undefined. Not renderHook. i want to mock value of hook for component

0 Answers0