Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

351
Views
¿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 answers
Answer question

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!