【Testing Library】React Componentをモック化する
Vitest × Testing LibraryでReactのFunction Componentをモック化したい時。
export default function ParentComponent() { return <ChildComponent />;}
export default function ChildComponent() { return <>...</>;}
例えば上記のような<ParentComponent/>
をレンダリングした時に<ChildComponent/>
がレンダリングされることを検証したい。ちなみに<ChildComponent/>
は何らかの理由でモック化したいという前提。
解決法
import { render, screen } from '@testing-library/react';
it('ChildComponentがレンダリングされる', () => { vi.mock('./ChildComponent', () => ({ default: () => <div data-testid="child-component" />, })); render(<ParentComponent />);
expect(screen.getByTestId('child-component')).toBeInTheDocument();});
vi.mock('./ChildComponent', () => ({ default: () => <div data-testid="child-component" />, ChildComponent: () => <div data-testid="child-component" />,}));
もしnamed exportしている場合はキー名を変えればよい。