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

467
Vistas
TypeError: (0, _style.default) no es una función - broma + material-ui

Tengo una configuración como la siguiente:

 // .jestrc.json ... "moduleNameMapper": { "style$": "<rootDir>/tests/mock.ts" } // mock.ts export default {}

Así es como suelo excluir mis activos de la broma para que no se rompa al intentar analizarlos.

Sin embargo, tuve que usar @mui/material (no es mi elección) y cuando uso la misma configuración que suelo hacer, ejecutar mis pruebas ahora se interrumpe en cualquier importación de @mui . En cualquier lugar donde haya importado un componente @mui , mi prueba se rompe con el error TypeError: (0 , _style.default) is not a function .

Revisé todas las preguntas de stackoverflow que pude encontrar sobre este error y varias otras publicaciones, pero nada de lo que intenté lo solucionó.

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

0

El error ocurre porque la expresión regular en moduleNameMapper también captura todos los estilos @mui , lo que hace que @mui se rompa debido a que no puede acceder al proveedor de temas y estilos HOC que usa internamente. El resultado es que @mui ahora también usa el objeto simulado vacío y se rompe debido a eso.

Encontré y probé varias soluciones con jest.mock y burlándome de los estilos/temas, sin embargo, la mayoría de ellas son soluciones completamente extravagantes y ninguna funcionó.

Al final la forma en que lo arreglé fue cambiar:

 "moduleNameMapper": { "style$": "<rootDir>/tests/mock.ts" }

a:

 "moduleNameMapper": { "style.(scss)$": "<rootDir>/tests/mock.ts" }

De modo que solo excluirá mis propios estilos y no @mui también. @mui se ocupará de sus propios estilos sin problemas cuando use jest, cuando use moduleNameMapper debe tener cuidado de no burlarse de los módulos que requieren sus dependencias y solo excluir los módulos que necesita.

El uso de "estilo" en la expresión regular accidentalmente también excluyó todas las cosas de @mui sin darse cuenta, solo arreglando eso y permitiendo que @mui se manejara solo hizo que todo funcionara perfecto.

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