Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

357
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda