Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

272
Vistas
Pruebas unitarias de ganchos de reacción personalizados en TypeScript usando Jest y @testing-library/react-hooks

Tengo un enlace personalizado que toma una identificación de producto y alterna con el value (boolean) y toggle como las devoluciones. Estoy tratando de escribir una prueba de unidad para ello, siguiendo el ejemplo aquí , pero recibo errores de falta de coincidencia de tipo de TypeScript (el ejemplo que estoy siguiendo no está escrito a máquina).

Gancho personalizado:

 export default function useToggle(id: number): [boolean, () => void] { const [value, setValue] = React.useState(false); useEffect(() => { try { const data = localStorage.getItem(ITEMS); const all = data ? JSON.parse(data) : {}; setValue(!!all[id]); } catch (error) { console.error('items localStorage get error', error); setValue(false); localStorage.removeItem(ITEMS); } }, [id]); function toggle() { try { const data = localStorage.getItem(ITEMS); const all = data ? JSON?.parse(data) : {}; all[id] = !all[id]; localStorage.setItem(ITEMS, JSON.stringify(all)); setValue(v => !v); } catch (error) { console.error('items localStorage set error', error); } } return [value, toggle]; }

Examen en progreso:

 describe('useToggle', () => { it('returns value and toggle', () => { const { result } = renderHook(() => useToggle(1)); const { value, toggle }: [boolean, () => void] = result.current; expect(value).toBe(false); expect(setValue).toBeDefined(); }); });

Error: donde defino el value y toggle , obtengo que Property 'value' does not exist on type '[boolean, () => void]'. y Property 'toggle' does not exist on type '[boolean, () => void]'.

¿Estoy configurando la definición de tipo de forma incorrecta o algo más va mal? Cualquier orientación sería apreciada. ¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Estás devolviendo una matriz. Por lo tanto, debe destruir usando [ value, toggleLike, toggleLike] y no { value, toggleLike} .

 describe('useLikes', () => { it('returns value and toggleLike', () => { const { result } = renderHook(() => useLikes(1)); const [ value, toggleLike ]: [boolean, () => void] = result.current; expect(value).toBe(false); expect(setValue).toBeDefined(); }); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda