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

447
Vistas
Burlarse de react-router-dom para useHistory hook provoca el siguiente error: TS2698: los tipos de propagación solo se pueden crear a partir de tipos de objetos

Estoy tratando de burlarme react-router-dom en uno de mis casos de prueba para que el useHistory funcione en mis pruebas. Decido usar jest.mock para simular todo el módulo y jest.requireActual para preservar las otras propiedades que no quiero simular.

 jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom'), useHistory: () => ({ location: { pathname: '/list', }, }), }));

En realidad, esto se deriva de una de las soluciones altamente calificadas para la siguiente pregunta: ¿Cómo simular el gancho useHistory en broma?

Sin embargo, el compilador de TypeScript marca el siguiente error en la siguiente línea ...jest.requireActual('react-router-dom'),

TS2698: los tipos de propagación solo se pueden crear a partir de tipos de objetos.

Curiosamente, solo enfrento este problema después de actualizar jest y ts-jest a las últimas versiones (jest v26). No enfrento ninguno de estos problemas cuando estaba usando jest 24.xx

 "@types/jest": "^26.0.4", "jest": "^26.1.0", "ts-jest": "^26.1.1",

¿Alguien sabe cómo resolver este problema para las últimas versiones de broma?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

jest.requireActual devuelve un tipo unknown que no se puede propagar.

Un tipo correcto es:

 import * as ReactRouterDom from 'react-router-dom'; jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom') as typeof ReactRouterDom, useHistory: ..., }));

Una solución rápida es any :

 jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom') as any, useHistory: ..., }));

Es aceptable porque no afecta la seguridad del tipo en este caso.

Dado que react-router-dom es un módulo ES, una forma más correcta de simularlo es:

 jest.mock('react-router-dom', () => ({ ...jest.requireActual('react-router-dom') as any, __esModule: true, useHistory: ..., }));
over 4 years ago · Santiago Trujillo 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