Skip to content

Instantly share code, notes, and snippets.

@claudiainbytes
Last active February 11, 2026 17:02
Show Gist options
  • Select an option

  • Save claudiainbytes/b0231bac7e8ea9be49a94f5ee7ec87fe to your computer and use it in GitHub Desktop.

Select an option

Save claudiainbytes/b0231bac7e8ea9be49a94f5ee7ec87fe to your computer and use it in GitHub Desktop.
2. Unit Testing. Hooks: useCounter
// Hook
export const useCounter = (initialValue = 0) => {
const [count, setCount] = useState(initialValue)
const increment = () => setCount(c => c + 1)
const decrement = () => setCount(c => c - 1)
const reset = () => setCount(initialValue)
return { count, increment, decrement, reset }
}
// Test
import { renderHook, act } from '@testing-library/react'
describe('useCounter', () => {
it('inicia con el valor por defecto', () => {
const { result } = renderHook(() => useCounter())
expect(result.current.count).toBe(0)
})
it('inicia con valor personalizado', () => {
const { result } = renderHook(() => useCounter(10))
expect(result.current.count).toBe(10)
})
it('incrementa el contador', () => {
const { result } = renderHook(() => useCounter())
act(() => {
result.current.increment()
})
expect(result.current.count).toBe(1)
})
it('resetea al valor inicial', () => {
const { result } = renderHook(() => useCounter(5))
act(() => {
result.current.increment()
result.current.increment()
result.current.reset()
})
expect(result.current.count).toBe(5)
})
})
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment