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

354
Vistas
¿Cómo burlarse de la clase principal manualmente en Jest?

Quiero cambiar los valores de retorno de los métodos de una clase base. Pero no pude encontrar ningún contenido para esto. Por favor ayuda.

Voy a dar un ejemplo.

Una clase básica:

 class ParentClass { save() { return "saved"; } }

Una clase infantil:

 class ChildClass extends ParentClass {}

Y probé esto:

El siguiente código está dentro de una carpeta llamada mocks /parent.js .

 const ParentClass = jest.fn().mockReturnValue({ save: jest.fn().mockReturnValue("mocked"), });

Finalmente este es mi archivo de prueba.

child.spec.js

 jest.mock("./parent"); it("should be return mocked value", () => { const child = new ChildClass(); expect(child.save()).toBe("mocked"); });

El código de prueba anterior no funciona. Porque da el siguiente error.

ingrese la descripción de la imagen aquí

Como puedo resolver esto? Gracias.

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

0

No pude burlarme de la clase Padres, pero encontré una solución complicada.

 jest.spyOn(ParentClass.prototype,"save").mockReturnValue("mocked");

Entonces, el código de prueba a continuación funciona sin ningún problema.

 it("should be called", () => { const child = new ChildClass(); jest.spyOn(ParentClass.prototype, "save").mockReturnValue("mocked"); expect(child.save()).toBe("mocked"); });

about 4 years ago · Juan Pablo Isaza Denunciar

0

Jest ejecuta jest.mock primero antes de evaluar cualquier módulo importado en su conjunto de pruebas, por lo tanto, deberá tener el simulacro definido dentro de su conjunto de pruebas.

Esto debería verse de la siguiente manera:

 jest.mock("./parent", () => ({ ParentClass: jest.fn().mockImplementation(() => ({ save: jest.fn().mockReturnValue("mocked"), })) }));

Explicación:

  • ./parent debe ser una ruta relativa al módulo parent que desea simular.
  • Debido a que ParentClass es una exportación con nombre, el objeto simulado devuelto debe tener una clave con el mismo nombre
  • Necesitamos usar jest.fn().mockImplementation para permitir que se cree una new instancia de clase, que luego devolverá un nuevo objeto con { save: jest.fn().mockReturnValue("mocked") }
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