What
Normally (in my legacy code base) I've always found that my legacy code from the old project use shallow to test the component. But the problem is shallow doesn't trigger React.useEffect that's why I googling and not it here.
Example component to test
const Component = ({ callMe }) => {
React.useEffect(() => {
callMe()
}, [])
return <>Yikes</>
}
Work around
description('Component', () => {
it('should call `callMe` on mount', () => {
const mockCallMe = jest.fn()
mount(<Component callMe={mockCallMe} />)
expect(mockCallMe).toHaveBeenCalled()
})
})
to solve this issue, instead of use shallow just use mount, the difference is mount are really mount component but shallow are just render
Long term
switch to @testing-library if you have effort 😆
Top comments (0)