@testing-library/react-hooks
Version:
Simple and complete React hooks testing utilities that encourage good testing practices.
53 lines (44 loc) • 1.28 kB
text/typescript
import { useEffect } from 'react'
// This verifies that by importing RHTL in an
// environment which supports afterEach (like Jest)
// we'll get automatic cleanup between tests.
describe('auto cleanup tests', () => {
runForRenderers(['default', 'dom', 'native'], ({ renderHook }) => {
let cleanupCalled = false
test('first', () => {
const useHookWithCleanup = () => {
useEffect(() => {
return () => {
cleanupCalled = true
}
})
}
renderHook(() => useHookWithCleanup())
})
test('second', () => {
expect(cleanupCalled).toBe(true)
})
})
runForRenderers(['server'], ({ renderHook }) => {
const cleanups: Record<string, boolean> = {
ssr: false,
hydrated: false
}
test('first (with hydration)', () => {
const useHookWithCleanup = (name: string) => {
useEffect(() => {
return () => {
cleanups[name] = true
}
})
}
renderHook(() => useHookWithCleanup('ssr'))
const { hydrate } = renderHook(() => useHookWithCleanup('hydrated'))
hydrate()
})
test('second (with hydration)', () => {
expect(cleanups.ssr).toBe(false)
expect(cleanups.hydrated).toBe(true)
})
})
})